/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ([
/* 0 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(1);
const Custom = module.exports = {};
__webpack_require__(332);
L.CRS.CustomEPSG4326 = __webpack_require__(333);
Custom.DataSource = __webpack_require__(334);
Custom.URLDataSource = __webpack_require__(336);
Custom.LocalDataSource = __webpack_require__(340);
L.GLabelGrid = __webpack_require__(341);
L.GWVTAnno = __webpack_require__(350);
Custom.Feature = __webpack_require__(359);

Custom.GGroup = __webpack_require__(360);
Custom.GLevels = __webpack_require__(361);
Custom.GStyleItem = __webpack_require__(362);


L.GDynamicMap = __webpack_require__(363);
L.GVMapGrid = __webpack_require__(364);
L.GXYZ = __webpack_require__(372);
Custom.GServiceGroup = __webpack_require__(373);


Custom.GVMapGridUtil = __webpack_require__(365);
Custom.Filter = __webpack_require__(343);
Custom.FilterLayer = __webpack_require__(344);




/***/ }),
/* 1 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(2);

__webpack_require__(328);

__webpack_require__(329);

if (__webpack_require__.g._babelPolyfill) {
  throw new Error("only one instance of babel-polyfill is allowed");
}
__webpack_require__.g._babelPolyfill = true;

var DEFINE_PROPERTY = "defineProperty";
function define(O, key, value) {
  O[key] || Object[DEFINE_PROPERTY](O, key, {
    writable: true,
    configurable: true,
    value: value
  });
}

define(String.prototype, "padLeft", "".padStart);
define(String.prototype, "padRight", "".padEnd);

"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (key) {
  [][key] && define(Array, key, Function.call.bind([][key]));
});

/***/ }),
/* 2 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(3);
__webpack_require__(53);
__webpack_require__(54);
__webpack_require__(55);
__webpack_require__(56);
__webpack_require__(58);
__webpack_require__(60);
__webpack_require__(61);
__webpack_require__(62);
__webpack_require__(63);
__webpack_require__(64);
__webpack_require__(65);
__webpack_require__(66);
__webpack_require__(67);
__webpack_require__(68);
__webpack_require__(70);
__webpack_require__(72);
__webpack_require__(74);
__webpack_require__(76);
__webpack_require__(79);
__webpack_require__(80);
__webpack_require__(81);
__webpack_require__(85);
__webpack_require__(87);
__webpack_require__(89);
__webpack_require__(92);
__webpack_require__(93);
__webpack_require__(94);
__webpack_require__(95);
__webpack_require__(97);
__webpack_require__(98);
__webpack_require__(99);
__webpack_require__(100);
__webpack_require__(101);
__webpack_require__(102);
__webpack_require__(103);
__webpack_require__(105);
__webpack_require__(106);
__webpack_require__(107);
__webpack_require__(109);
__webpack_require__(110);
__webpack_require__(111);
__webpack_require__(113);
__webpack_require__(115);
__webpack_require__(116);
__webpack_require__(117);
__webpack_require__(118);
__webpack_require__(119);
__webpack_require__(120);
__webpack_require__(121);
__webpack_require__(122);
__webpack_require__(123);
__webpack_require__(124);
__webpack_require__(125);
__webpack_require__(126);
__webpack_require__(127);
__webpack_require__(132);
__webpack_require__(133);
__webpack_require__(137);
__webpack_require__(138);
__webpack_require__(139);
__webpack_require__(140);
__webpack_require__(142);
__webpack_require__(143);
__webpack_require__(144);
__webpack_require__(145);
__webpack_require__(146);
__webpack_require__(147);
__webpack_require__(148);
__webpack_require__(149);
__webpack_require__(150);
__webpack_require__(151);
__webpack_require__(152);
__webpack_require__(153);
__webpack_require__(154);
__webpack_require__(155);
__webpack_require__(156);
__webpack_require__(158);
__webpack_require__(159);
__webpack_require__(161);
__webpack_require__(162);
__webpack_require__(168);
__webpack_require__(169);
__webpack_require__(171);
__webpack_require__(172);
__webpack_require__(173);
__webpack_require__(177);
__webpack_require__(178);
__webpack_require__(179);
__webpack_require__(180);
__webpack_require__(181);
__webpack_require__(183);
__webpack_require__(184);
__webpack_require__(185);
__webpack_require__(186);
__webpack_require__(189);
__webpack_require__(191);
__webpack_require__(192);
__webpack_require__(193);
__webpack_require__(195);
__webpack_require__(197);
__webpack_require__(199);
__webpack_require__(201);
__webpack_require__(202);
__webpack_require__(203);
__webpack_require__(207);
__webpack_require__(208);
__webpack_require__(209);
__webpack_require__(211);
__webpack_require__(221);
__webpack_require__(225);
__webpack_require__(226);
__webpack_require__(228);
__webpack_require__(229);
__webpack_require__(233);
__webpack_require__(234);
__webpack_require__(236);
__webpack_require__(237);
__webpack_require__(238);
__webpack_require__(239);
__webpack_require__(240);
__webpack_require__(241);
__webpack_require__(242);
__webpack_require__(243);
__webpack_require__(244);
__webpack_require__(245);
__webpack_require__(246);
__webpack_require__(247);
__webpack_require__(248);
__webpack_require__(249);
__webpack_require__(250);
__webpack_require__(251);
__webpack_require__(252);
__webpack_require__(253);
__webpack_require__(254);
__webpack_require__(256);
__webpack_require__(257);
__webpack_require__(258);
__webpack_require__(259);
__webpack_require__(260);
__webpack_require__(262);
__webpack_require__(263);
__webpack_require__(264);
__webpack_require__(266);
__webpack_require__(267);
__webpack_require__(268);
__webpack_require__(269);
__webpack_require__(270);
__webpack_require__(271);
__webpack_require__(272);
__webpack_require__(273);
__webpack_require__(275);
__webpack_require__(276);
__webpack_require__(278);
__webpack_require__(279);
__webpack_require__(280);
__webpack_require__(281);
__webpack_require__(284);
__webpack_require__(285);
__webpack_require__(287);
__webpack_require__(288);
__webpack_require__(289);
__webpack_require__(290);
__webpack_require__(292);
__webpack_require__(293);
__webpack_require__(294);
__webpack_require__(295);
__webpack_require__(296);
__webpack_require__(297);
__webpack_require__(298);
__webpack_require__(299);
__webpack_require__(300);
__webpack_require__(301);
__webpack_require__(303);
__webpack_require__(304);
__webpack_require__(305);
__webpack_require__(306);
__webpack_require__(307);
__webpack_require__(308);
__webpack_require__(309);
__webpack_require__(310);
__webpack_require__(311);
__webpack_require__(312);
__webpack_require__(313);
__webpack_require__(315);
__webpack_require__(316);
__webpack_require__(317);
__webpack_require__(318);
__webpack_require__(319);
__webpack_require__(320);
__webpack_require__(321);
__webpack_require__(322);
__webpack_require__(323);
__webpack_require__(324);
__webpack_require__(325);
__webpack_require__(326);
__webpack_require__(327);
module.exports = __webpack_require__(9);


/***/ }),
/* 3 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(4);
var has = __webpack_require__(5);
var DESCRIPTORS = __webpack_require__(6);
var $export = __webpack_require__(8);
var redefine = __webpack_require__(18);
var META = __webpack_require__(25).KEY;
var $fails = __webpack_require__(7);
var shared = __webpack_require__(21);
var setToStringTag = __webpack_require__(26);
var uid = __webpack_require__(19);
var wks = __webpack_require__(27);
var wksExt = __webpack_require__(28);
var wksDefine = __webpack_require__(29);
var enumKeys = __webpack_require__(30);
var isArray = __webpack_require__(45);
var anObject = __webpack_require__(12);
var isObject = __webpack_require__(13);
var toObject = __webpack_require__(46);
var toIObject = __webpack_require__(33);
var toPrimitive = __webpack_require__(16);
var createDesc = __webpack_require__(17);
var _create = __webpack_require__(47);
var gOPNExt = __webpack_require__(50);
var $GOPD = __webpack_require__(52);
var $GOPS = __webpack_require__(43);
var $DP = __webpack_require__(11);
var $keys = __webpack_require__(31);
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(51).f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(44).f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(22)) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),
/* 4 */
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),
/* 5 */
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),
/* 6 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(7)(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 7 */
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),
/* 8 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var core = __webpack_require__(9);
var hide = __webpack_require__(10);
var redefine = __webpack_require__(18);
var ctx = __webpack_require__(23);
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),
/* 9 */
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),
/* 10 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(11);
var createDesc = __webpack_require__(17);
module.exports = __webpack_require__(6) ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),
/* 11 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(12);
var IE8_DOM_DEFINE = __webpack_require__(14);
var toPrimitive = __webpack_require__(16);
var dP = Object.defineProperty;

exports.f = __webpack_require__(6) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),
/* 12 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(13);
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),
/* 13 */
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),
/* 14 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(6) && !__webpack_require__(7)(function () {
  return Object.defineProperty(__webpack_require__(15)('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 15 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(13);
var document = __webpack_require__(4).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),
/* 16 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(13);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),
/* 17 */
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),
/* 18 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var hide = __webpack_require__(10);
var has = __webpack_require__(5);
var SRC = __webpack_require__(19)('src');
var $toString = __webpack_require__(20);
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(9).inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),
/* 19 */
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),
/* 20 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(21)('native-function-to-string', Function.toString);


/***/ }),
/* 21 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(9);
var global = __webpack_require__(4);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(22) ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),
/* 22 */
/***/ ((module) => {

module.exports = false;


/***/ }),
/* 23 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(24);
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),
/* 24 */
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),
/* 25 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(19)('meta');
var isObject = __webpack_require__(13);
var has = __webpack_require__(5);
var setDesc = __webpack_require__(11).f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(7)(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),
/* 26 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(11).f;
var has = __webpack_require__(5);
var TAG = __webpack_require__(27)('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),
/* 27 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(21)('wks');
var uid = __webpack_require__(19);
var Symbol = __webpack_require__(4).Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),
/* 28 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(27);


/***/ }),
/* 29 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var core = __webpack_require__(9);
var LIBRARY = __webpack_require__(22);
var wksExt = __webpack_require__(28);
var defineProperty = __webpack_require__(11).f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),
/* 30 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(31);
var gOPS = __webpack_require__(43);
var pIE = __webpack_require__(44);
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),
/* 31 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(32);
var enumBugKeys = __webpack_require__(42);

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),
/* 32 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(5);
var toIObject = __webpack_require__(33);
var arrayIndexOf = __webpack_require__(37)(false);
var IE_PROTO = __webpack_require__(41)('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),
/* 33 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(34);
var defined = __webpack_require__(36);
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),
/* 34 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(35);
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),
/* 35 */
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),
/* 36 */
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),
/* 37 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(33);
var toLength = __webpack_require__(38);
var toAbsoluteIndex = __webpack_require__(40);
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),
/* 38 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(39);
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),
/* 39 */
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),
/* 40 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(39);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),
/* 41 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(21)('keys');
var uid = __webpack_require__(19);
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),
/* 42 */
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),
/* 43 */
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),
/* 44 */
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),
/* 45 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(35);
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),
/* 46 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(36);
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),
/* 47 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(12);
var dPs = __webpack_require__(48);
var enumBugKeys = __webpack_require__(42);
var IE_PROTO = __webpack_require__(41)('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(15)('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(49).appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),
/* 48 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(11);
var anObject = __webpack_require__(12);
var getKeys = __webpack_require__(31);

module.exports = __webpack_require__(6) ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),
/* 49 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(4).document;
module.exports = document && document.documentElement;


/***/ }),
/* 50 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(33);
var gOPN = __webpack_require__(51).f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),
/* 51 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(32);
var hiddenKeys = __webpack_require__(42).concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),
/* 52 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(44);
var createDesc = __webpack_require__(17);
var toIObject = __webpack_require__(33);
var toPrimitive = __webpack_require__(16);
var has = __webpack_require__(5);
var IE8_DOM_DEFINE = __webpack_require__(14);
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(6) ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),
/* 53 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(47) });


/***/ }),
/* 54 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(6), 'Object', { defineProperty: __webpack_require__(11).f });


/***/ }),
/* 55 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
$export($export.S + $export.F * !__webpack_require__(6), 'Object', { defineProperties: __webpack_require__(48) });


/***/ }),
/* 56 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(33);
var $getOwnPropertyDescriptor = __webpack_require__(52).f;

__webpack_require__(57)('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),
/* 57 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(8);
var core = __webpack_require__(9);
var fails = __webpack_require__(7);
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),
/* 58 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(46);
var $getPrototypeOf = __webpack_require__(59);

__webpack_require__(57)('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),
/* 59 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(5);
var toObject = __webpack_require__(46);
var IE_PROTO = __webpack_require__(41)('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),
/* 60 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(46);
var $keys = __webpack_require__(31);

__webpack_require__(57)('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),
/* 61 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.7 Object.getOwnPropertyNames(O)
__webpack_require__(57)('getOwnPropertyNames', function () {
  return __webpack_require__(50).f;
});


/***/ }),
/* 62 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.5 Object.freeze(O)
var isObject = __webpack_require__(13);
var meta = __webpack_require__(25).onFreeze;

__webpack_require__(57)('freeze', function ($freeze) {
  return function freeze(it) {
    return $freeze && isObject(it) ? $freeze(meta(it)) : it;
  };
});


/***/ }),
/* 63 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.17 Object.seal(O)
var isObject = __webpack_require__(13);
var meta = __webpack_require__(25).onFreeze;

__webpack_require__(57)('seal', function ($seal) {
  return function seal(it) {
    return $seal && isObject(it) ? $seal(meta(it)) : it;
  };
});


/***/ }),
/* 64 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.15 Object.preventExtensions(O)
var isObject = __webpack_require__(13);
var meta = __webpack_require__(25).onFreeze;

__webpack_require__(57)('preventExtensions', function ($preventExtensions) {
  return function preventExtensions(it) {
    return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
  };
});


/***/ }),
/* 65 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.12 Object.isFrozen(O)
var isObject = __webpack_require__(13);

__webpack_require__(57)('isFrozen', function ($isFrozen) {
  return function isFrozen(it) {
    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
  };
});


/***/ }),
/* 66 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.13 Object.isSealed(O)
var isObject = __webpack_require__(13);

__webpack_require__(57)('isSealed', function ($isSealed) {
  return function isSealed(it) {
    return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
  };
});


/***/ }),
/* 67 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.11 Object.isExtensible(O)
var isObject = __webpack_require__(13);

__webpack_require__(57)('isExtensible', function ($isExtensible) {
  return function isExtensible(it) {
    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
  };
});


/***/ }),
/* 68 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(8);

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(69) });


/***/ }),
/* 69 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(6);
var getKeys = __webpack_require__(31);
var gOPS = __webpack_require__(43);
var pIE = __webpack_require__(44);
var toObject = __webpack_require__(46);
var IObject = __webpack_require__(34);
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(7)(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),
/* 70 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.10 Object.is(value1, value2)
var $export = __webpack_require__(8);
$export($export.S, 'Object', { is: __webpack_require__(71) });


/***/ }),
/* 71 */
/***/ ((module) => {

// 7.2.9 SameValue(x, y)
module.exports = Object.is || function is(x, y) {
  // eslint-disable-next-line no-self-compare
  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
};


/***/ }),
/* 72 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(8);
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(73).set });


/***/ }),
/* 73 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(13);
var anObject = __webpack_require__(12);
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(23)(Function.call, __webpack_require__(52).f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),
/* 74 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(75);
var test = {};
test[__webpack_require__(27)('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(18)(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),
/* 75 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(35);
var TAG = __webpack_require__(27)('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),
/* 76 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
var $export = __webpack_require__(8);

$export($export.P, 'Function', { bind: __webpack_require__(77) });


/***/ }),
/* 77 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(24);
var isObject = __webpack_require__(13);
var invoke = __webpack_require__(78);
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),
/* 78 */
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),
/* 79 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(11).f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(6) && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),
/* 80 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var isObject = __webpack_require__(13);
var getPrototypeOf = __webpack_require__(59);
var HAS_INSTANCE = __webpack_require__(27)('hasInstance');
var FunctionProto = Function.prototype;
// 19.2.3.6 Function.prototype[@@hasInstance](V)
if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(11).f(FunctionProto, HAS_INSTANCE, { value: function (O) {
  if (typeof this != 'function' || !isObject(O)) return false;
  if (!isObject(this.prototype)) return O instanceof this;
  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
  while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
  return false;
} });


/***/ }),
/* 81 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var $parseInt = __webpack_require__(82);
// 18.2.5 parseInt(string, radix)
$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });


/***/ }),
/* 82 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $parseInt = __webpack_require__(4).parseInt;
var $trim = __webpack_require__(83).trim;
var ws = __webpack_require__(84);
var hex = /^[-+]?0[xX]/;

module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
  var string = $trim(String(str), 3);
  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
} : $parseInt;


/***/ }),
/* 83 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var defined = __webpack_require__(36);
var fails = __webpack_require__(7);
var spaces = __webpack_require__(84);
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');

var exporter = function (KEY, exec, ALIAS) {
  var exp = {};
  var FORCE = fails(function () {
    return !!spaces[KEY]() || non[KEY]() != non;
  });
  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  if (ALIAS) exp[ALIAS] = fn;
  $export($export.P + $export.F * FORCE, 'String', exp);
};

// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function (string, TYPE) {
  string = String(defined(string));
  if (TYPE & 1) string = string.replace(ltrim, '');
  if (TYPE & 2) string = string.replace(rtrim, '');
  return string;
};

module.exports = exporter;


/***/ }),
/* 84 */
/***/ ((module) => {

module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),
/* 85 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var $parseFloat = __webpack_require__(86);
// 18.2.4 parseFloat(string)
$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });


/***/ }),
/* 86 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $parseFloat = __webpack_require__(4).parseFloat;
var $trim = __webpack_require__(83).trim;

module.exports = 1 / $parseFloat(__webpack_require__(84) + '-0') !== -Infinity ? function parseFloat(str) {
  var string = $trim(String(str), 3);
  var result = $parseFloat(string);
  return result === 0 && string.charAt(0) == '-' ? -0 : result;
} : $parseFloat;


/***/ }),
/* 87 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(4);
var has = __webpack_require__(5);
var cof = __webpack_require__(35);
var inheritIfRequired = __webpack_require__(88);
var toPrimitive = __webpack_require__(16);
var fails = __webpack_require__(7);
var gOPN = __webpack_require__(51).f;
var gOPD = __webpack_require__(52).f;
var dP = __webpack_require__(11).f;
var $trim = __webpack_require__(83).trim;
var NUMBER = 'Number';
var $Number = global[NUMBER];
var Base = $Number;
var proto = $Number.prototype;
// Opera ~12 has broken Object#toString
var BROKEN_COF = cof(__webpack_require__(47)(proto)) == NUMBER;
var TRIM = 'trim' in String.prototype;

// 7.1.3 ToNumber(argument)
var toNumber = function (argument) {
  var it = toPrimitive(argument, false);
  if (typeof it == 'string' && it.length > 2) {
    it = TRIM ? it.trim() : $trim(it, 3);
    var first = it.charCodeAt(0);
    var third, radix, maxCode;
    if (first === 43 || first === 45) {
      third = it.charCodeAt(2);
      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
    } else if (first === 48) {
      switch (it.charCodeAt(1)) {
        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
        default: return +it;
      }
      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
        code = digits.charCodeAt(i);
        // parseInt parses a string to a first unavailable symbol
        // but ToNumber should return NaN if a string contains unavailable symbols
        if (code < 48 || code > maxCode) return NaN;
      } return parseInt(digits, radix);
    }
  } return +it;
};

if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
  $Number = function Number(value) {
    var it = arguments.length < 1 ? 0 : value;
    var that = this;
    return that instanceof $Number
      // check on 1..constructor(foo) case
      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
  };
  for (var keys = __webpack_require__(6) ? gOPN(Base) : (
    // ES3:
    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
    // ES6 (in case, if modules with ES6 Number statics required before):
    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
  ).split(','), j = 0, key; keys.length > j; j++) {
    if (has(Base, key = keys[j]) && !has($Number, key)) {
      dP($Number, key, gOPD(Base, key));
    }
  }
  $Number.prototype = proto;
  proto.constructor = $Number;
  __webpack_require__(18)(global, NUMBER, $Number);
}


/***/ }),
/* 88 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(13);
var setPrototypeOf = __webpack_require__(73).set;
module.exports = function (that, target, C) {
  var S = target.constructor;
  var P;
  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
    setPrototypeOf(that, P);
  } return that;
};


/***/ }),
/* 89 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toInteger = __webpack_require__(39);
var aNumberValue = __webpack_require__(90);
var repeat = __webpack_require__(91);
var $toFixed = 1.0.toFixed;
var floor = Math.floor;
var data = [0, 0, 0, 0, 0, 0];
var ERROR = 'Number.toFixed: incorrect invocation!';
var ZERO = '0';

var multiply = function (n, c) {
  var i = -1;
  var c2 = c;
  while (++i < 6) {
    c2 += n * data[i];
    data[i] = c2 % 1e7;
    c2 = floor(c2 / 1e7);
  }
};
var divide = function (n) {
  var i = 6;
  var c = 0;
  while (--i >= 0) {
    c += data[i];
    data[i] = floor(c / n);
    c = (c % n) * 1e7;
  }
};
var numToString = function () {
  var i = 6;
  var s = '';
  while (--i >= 0) {
    if (s !== '' || i === 0 || data[i] !== 0) {
      var t = String(data[i]);
      s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
    }
  } return s;
};
var pow = function (x, n, acc) {
  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
};
var log = function (x) {
  var n = 0;
  var x2 = x;
  while (x2 >= 4096) {
    n += 12;
    x2 /= 4096;
  }
  while (x2 >= 2) {
    n += 1;
    x2 /= 2;
  } return n;
};

$export($export.P + $export.F * (!!$toFixed && (
  0.00008.toFixed(3) !== '0.000' ||
  0.9.toFixed(0) !== '1' ||
  1.255.toFixed(2) !== '1.25' ||
  1000000000000000128.0.toFixed(0) !== '1000000000000000128'
) || !__webpack_require__(7)(function () {
  // V8 ~ Android 4.3-
  $toFixed.call({});
})), 'Number', {
  toFixed: function toFixed(fractionDigits) {
    var x = aNumberValue(this, ERROR);
    var f = toInteger(fractionDigits);
    var s = '';
    var m = ZERO;
    var e, z, j, k;
    if (f < 0 || f > 20) throw RangeError(ERROR);
    // eslint-disable-next-line no-self-compare
    if (x != x) return 'NaN';
    if (x <= -1e21 || x >= 1e21) return String(x);
    if (x < 0) {
      s = '-';
      x = -x;
    }
    if (x > 1e-21) {
      e = log(x * pow(2, 69, 1)) - 69;
      z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
      z *= 0x10000000000000;
      e = 52 - e;
      if (e > 0) {
        multiply(0, z);
        j = f;
        while (j >= 7) {
          multiply(1e7, 0);
          j -= 7;
        }
        multiply(pow(10, j, 1), 0);
        j = e - 1;
        while (j >= 23) {
          divide(1 << 23);
          j -= 23;
        }
        divide(1 << j);
        multiply(1, 1);
        divide(2);
        m = numToString();
      } else {
        multiply(0, z);
        multiply(1 << -e, 0);
        m = numToString() + repeat.call(ZERO, f);
      }
    }
    if (f > 0) {
      k = m.length;
      m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
    } else {
      m = s + m;
    } return m;
  }
});


/***/ }),
/* 90 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var cof = __webpack_require__(35);
module.exports = function (it, msg) {
  if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);
  return +it;
};


/***/ }),
/* 91 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var toInteger = __webpack_require__(39);
var defined = __webpack_require__(36);

module.exports = function repeat(count) {
  var str = String(defined(this));
  var res = '';
  var n = toInteger(count);
  if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;
  return res;
};


/***/ }),
/* 92 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $fails = __webpack_require__(7);
var aNumberValue = __webpack_require__(90);
var $toPrecision = 1.0.toPrecision;

$export($export.P + $export.F * ($fails(function () {
  // IE7-
  return $toPrecision.call(1, undefined) !== '1';
}) || !$fails(function () {
  // V8 ~ Android 4.3-
  $toPrecision.call({});
})), 'Number', {
  toPrecision: function toPrecision(precision) {
    var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
    return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
  }
});


/***/ }),
/* 93 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.1 Number.EPSILON
var $export = __webpack_require__(8);

$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });


/***/ }),
/* 94 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.2 Number.isFinite(number)
var $export = __webpack_require__(8);
var _isFinite = __webpack_require__(4).isFinite;

$export($export.S, 'Number', {
  isFinite: function isFinite(it) {
    return typeof it == 'number' && _isFinite(it);
  }
});


/***/ }),
/* 95 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.3 Number.isInteger(number)
var $export = __webpack_require__(8);

$export($export.S, 'Number', { isInteger: __webpack_require__(96) });


/***/ }),
/* 96 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.3 Number.isInteger(number)
var isObject = __webpack_require__(13);
var floor = Math.floor;
module.exports = function isInteger(it) {
  return !isObject(it) && isFinite(it) && floor(it) === it;
};


/***/ }),
/* 97 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.4 Number.isNaN(number)
var $export = __webpack_require__(8);

$export($export.S, 'Number', {
  isNaN: function isNaN(number) {
    // eslint-disable-next-line no-self-compare
    return number != number;
  }
});


/***/ }),
/* 98 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.5 Number.isSafeInteger(number)
var $export = __webpack_require__(8);
var isInteger = __webpack_require__(96);
var abs = Math.abs;

$export($export.S, 'Number', {
  isSafeInteger: function isSafeInteger(number) {
    return isInteger(number) && abs(number) <= 0x1fffffffffffff;
  }
});


/***/ }),
/* 99 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.6 Number.MAX_SAFE_INTEGER
var $export = __webpack_require__(8);

$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });


/***/ }),
/* 100 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.1.2.10 Number.MIN_SAFE_INTEGER
var $export = __webpack_require__(8);

$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });


/***/ }),
/* 101 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var $parseFloat = __webpack_require__(86);
// 20.1.2.12 Number.parseFloat(string)
$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });


/***/ }),
/* 102 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var $parseInt = __webpack_require__(82);
// 20.1.2.13 Number.parseInt(string, radix)
$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });


/***/ }),
/* 103 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.3 Math.acosh(x)
var $export = __webpack_require__(8);
var log1p = __webpack_require__(104);
var sqrt = Math.sqrt;
var $acosh = Math.acosh;

$export($export.S + $export.F * !($acosh
  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
  && Math.floor($acosh(Number.MAX_VALUE)) == 710
  // Tor Browser bug: Math.acosh(Infinity) -> NaN
  && $acosh(Infinity) == Infinity
), 'Math', {
  acosh: function acosh(x) {
    return (x = +x) < 1 ? NaN : x > 94906265.62425156
      ? Math.log(x) + Math.LN2
      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
  }
});


/***/ }),
/* 104 */
/***/ ((module) => {

// 20.2.2.20 Math.log1p(x)
module.exports = Math.log1p || function log1p(x) {
  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
};


/***/ }),
/* 105 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.5 Math.asinh(x)
var $export = __webpack_require__(8);
var $asinh = Math.asinh;

function asinh(x) {
  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
}

// Tor Browser bug: Math.asinh(0) -> -0
$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });


/***/ }),
/* 106 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.7 Math.atanh(x)
var $export = __webpack_require__(8);
var $atanh = Math.atanh;

// Tor Browser bug: Math.atanh(-0) -> 0
$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
  atanh: function atanh(x) {
    return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
  }
});


/***/ }),
/* 107 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.9 Math.cbrt(x)
var $export = __webpack_require__(8);
var sign = __webpack_require__(108);

$export($export.S, 'Math', {
  cbrt: function cbrt(x) {
    return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
  }
});


/***/ }),
/* 108 */
/***/ ((module) => {

// 20.2.2.28 Math.sign(x)
module.exports = Math.sign || function sign(x) {
  // eslint-disable-next-line no-self-compare
  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
};


/***/ }),
/* 109 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.11 Math.clz32(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  clz32: function clz32(x) {
    return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
  }
});


/***/ }),
/* 110 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.12 Math.cosh(x)
var $export = __webpack_require__(8);
var exp = Math.exp;

$export($export.S, 'Math', {
  cosh: function cosh(x) {
    return (exp(x = +x) + exp(-x)) / 2;
  }
});


/***/ }),
/* 111 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.14 Math.expm1(x)
var $export = __webpack_require__(8);
var $expm1 = __webpack_require__(112);

$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });


/***/ }),
/* 112 */
/***/ ((module) => {

// 20.2.2.14 Math.expm1(x)
var $expm1 = Math.expm1;
module.exports = (!$expm1
  // Old FF bug
  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
  // Tor Browser bug
  || $expm1(-2e-17) != -2e-17
) ? function expm1(x) {
  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
} : $expm1;


/***/ }),
/* 113 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.16 Math.fround(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', { fround: __webpack_require__(114) });


/***/ }),
/* 114 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.16 Math.fround(x)
var sign = __webpack_require__(108);
var pow = Math.pow;
var EPSILON = pow(2, -52);
var EPSILON32 = pow(2, -23);
var MAX32 = pow(2, 127) * (2 - EPSILON32);
var MIN32 = pow(2, -126);

var roundTiesToEven = function (n) {
  return n + 1 / EPSILON - 1 / EPSILON;
};

module.exports = Math.fround || function fround(x) {
  var $abs = Math.abs(x);
  var $sign = sign(x);
  var a, result;
  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
  a = (1 + EPSILON32 / EPSILON) * $abs;
  result = a - (a - $abs);
  // eslint-disable-next-line no-self-compare
  if (result > MAX32 || result != result) return $sign * Infinity;
  return $sign * result;
};


/***/ }),
/* 115 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
var $export = __webpack_require__(8);
var abs = Math.abs;

$export($export.S, 'Math', {
  hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
    var sum = 0;
    var i = 0;
    var aLen = arguments.length;
    var larg = 0;
    var arg, div;
    while (i < aLen) {
      arg = abs(arguments[i++]);
      if (larg < arg) {
        div = larg / arg;
        sum = sum * div * div + 1;
        larg = arg;
      } else if (arg > 0) {
        div = arg / larg;
        sum += div * div;
      } else sum += arg;
    }
    return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
  }
});


/***/ }),
/* 116 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.18 Math.imul(x, y)
var $export = __webpack_require__(8);
var $imul = Math.imul;

// some WebKit versions fails with big numbers, some has wrong arity
$export($export.S + $export.F * __webpack_require__(7)(function () {
  return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
}), 'Math', {
  imul: function imul(x, y) {
    var UINT16 = 0xffff;
    var xn = +x;
    var yn = +y;
    var xl = UINT16 & xn;
    var yl = UINT16 & yn;
    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
  }
});


/***/ }),
/* 117 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.21 Math.log10(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  log10: function log10(x) {
    return Math.log(x) * Math.LOG10E;
  }
});


/***/ }),
/* 118 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.20 Math.log1p(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', { log1p: __webpack_require__(104) });


/***/ }),
/* 119 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.22 Math.log2(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  log2: function log2(x) {
    return Math.log(x) / Math.LN2;
  }
});


/***/ }),
/* 120 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.28 Math.sign(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', { sign: __webpack_require__(108) });


/***/ }),
/* 121 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.30 Math.sinh(x)
var $export = __webpack_require__(8);
var expm1 = __webpack_require__(112);
var exp = Math.exp;

// V8 near Chromium 38 has a problem with very small numbers
$export($export.S + $export.F * __webpack_require__(7)(function () {
  return !Math.sinh(-2e-17) != -2e-17;
}), 'Math', {
  sinh: function sinh(x) {
    return Math.abs(x = +x) < 1
      ? (expm1(x) - expm1(-x)) / 2
      : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
  }
});


/***/ }),
/* 122 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.33 Math.tanh(x)
var $export = __webpack_require__(8);
var expm1 = __webpack_require__(112);
var exp = Math.exp;

$export($export.S, 'Math', {
  tanh: function tanh(x) {
    var a = expm1(x = +x);
    var b = expm1(-x);
    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
  }
});


/***/ }),
/* 123 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.2.2.34 Math.trunc(x)
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  trunc: function trunc(it) {
    return (it > 0 ? Math.floor : Math.ceil)(it);
  }
});


/***/ }),
/* 124 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var toAbsoluteIndex = __webpack_require__(40);
var fromCharCode = String.fromCharCode;
var $fromCodePoint = String.fromCodePoint;

// length should be 1, old FF problem
$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
  // 21.1.2.2 String.fromCodePoint(...codePoints)
  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
    var res = [];
    var aLen = arguments.length;
    var i = 0;
    var code;
    while (aLen > i) {
      code = +arguments[i++];
      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
      res.push(code < 0x10000
        ? fromCharCode(code)
        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
      );
    } return res.join('');
  }
});


/***/ }),
/* 125 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var toIObject = __webpack_require__(33);
var toLength = __webpack_require__(38);

$export($export.S, 'String', {
  // 21.1.2.4 String.raw(callSite, ...substitutions)
  raw: function raw(callSite) {
    var tpl = toIObject(callSite.raw);
    var len = toLength(tpl.length);
    var aLen = arguments.length;
    var res = [];
    var i = 0;
    while (len > i) {
      res.push(String(tpl[i++]));
      if (i < aLen) res.push(String(arguments[i]));
    } return res.join('');
  }
});


/***/ }),
/* 126 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.1.3.25 String.prototype.trim()
__webpack_require__(83)('trim', function ($trim) {
  return function trim() {
    return $trim(this, 3);
  };
});


/***/ }),
/* 127 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(128)(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(129)(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),
/* 128 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(39);
var defined = __webpack_require__(36);
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),
/* 129 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(22);
var $export = __webpack_require__(8);
var redefine = __webpack_require__(18);
var hide = __webpack_require__(10);
var Iterators = __webpack_require__(130);
var $iterCreate = __webpack_require__(131);
var setToStringTag = __webpack_require__(26);
var getPrototypeOf = __webpack_require__(59);
var ITERATOR = __webpack_require__(27)('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),
/* 130 */
/***/ ((module) => {

module.exports = {};


/***/ }),
/* 131 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(47);
var descriptor = __webpack_require__(17);
var setToStringTag = __webpack_require__(26);
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(10)(IteratorPrototype, __webpack_require__(27)('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),
/* 132 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $at = __webpack_require__(128)(false);
$export($export.P, 'String', {
  // 21.1.3.3 String.prototype.codePointAt(pos)
  codePointAt: function codePointAt(pos) {
    return $at(this, pos);
  }
});


/***/ }),
/* 133 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])

var $export = __webpack_require__(8);
var toLength = __webpack_require__(38);
var context = __webpack_require__(134);
var ENDS_WITH = 'endsWith';
var $endsWith = ''[ENDS_WITH];

$export($export.P + $export.F * __webpack_require__(136)(ENDS_WITH), 'String', {
  endsWith: function endsWith(searchString /* , endPosition = @length */) {
    var that = context(this, searchString, ENDS_WITH);
    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
    var len = toLength(that.length);
    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
    var search = String(searchString);
    return $endsWith
      ? $endsWith.call(that, search, end)
      : that.slice(end - search.length, end) === search;
  }
});


/***/ }),
/* 134 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// helper for String#{startsWith, endsWith, includes}
var isRegExp = __webpack_require__(135);
var defined = __webpack_require__(36);

module.exports = function (that, searchString, NAME) {
  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
  return String(defined(that));
};


/***/ }),
/* 135 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(13);
var cof = __webpack_require__(35);
var MATCH = __webpack_require__(27)('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),
/* 136 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var MATCH = __webpack_require__(27)('match');
module.exports = function (KEY) {
  var re = /./;
  try {
    '/./'[KEY](re);
  } catch (e) {
    try {
      re[MATCH] = false;
      return !'/./'[KEY](re);
    } catch (f) { /* empty */ }
  } return true;
};


/***/ }),
/* 137 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 21.1.3.7 String.prototype.includes(searchString, position = 0)

var $export = __webpack_require__(8);
var context = __webpack_require__(134);
var INCLUDES = 'includes';

$export($export.P + $export.F * __webpack_require__(136)(INCLUDES), 'String', {
  includes: function includes(searchString /* , position = 0 */) {
    return !!~context(this, searchString, INCLUDES)
      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  }
});


/***/ }),
/* 138 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);

$export($export.P, 'String', {
  // 21.1.3.13 String.prototype.repeat(count)
  repeat: __webpack_require__(91)
});


/***/ }),
/* 139 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 21.1.3.18 String.prototype.startsWith(searchString [, position ])

var $export = __webpack_require__(8);
var toLength = __webpack_require__(38);
var context = __webpack_require__(134);
var STARTS_WITH = 'startsWith';
var $startsWith = ''[STARTS_WITH];

$export($export.P + $export.F * __webpack_require__(136)(STARTS_WITH), 'String', {
  startsWith: function startsWith(searchString /* , position = 0 */) {
    var that = context(this, searchString, STARTS_WITH);
    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
    var search = String(searchString);
    return $startsWith
      ? $startsWith.call(that, search, index)
      : that.slice(index, index + search.length) === search;
  }
});


/***/ }),
/* 140 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.2 String.prototype.anchor(name)
__webpack_require__(141)('anchor', function (createHTML) {
  return function anchor(name) {
    return createHTML(this, 'a', 'name', name);
  };
});


/***/ }),
/* 141 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var fails = __webpack_require__(7);
var defined = __webpack_require__(36);
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
var createHTML = function (string, tag, attribute, value) {
  var S = String(defined(string));
  var p1 = '<' + tag;
  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
  return p1 + '>' + S + '</' + tag + '>';
};
module.exports = function (NAME, exec) {
  var O = {};
  O[NAME] = exec(createHTML);
  $export($export.P + $export.F * fails(function () {
    var test = ''[NAME]('"');
    return test !== test.toLowerCase() || test.split('"').length > 3;
  }), 'String', O);
};


/***/ }),
/* 142 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.3 String.prototype.big()
__webpack_require__(141)('big', function (createHTML) {
  return function big() {
    return createHTML(this, 'big', '', '');
  };
});


/***/ }),
/* 143 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.4 String.prototype.blink()
__webpack_require__(141)('blink', function (createHTML) {
  return function blink() {
    return createHTML(this, 'blink', '', '');
  };
});


/***/ }),
/* 144 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.5 String.prototype.bold()
__webpack_require__(141)('bold', function (createHTML) {
  return function bold() {
    return createHTML(this, 'b', '', '');
  };
});


/***/ }),
/* 145 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.6 String.prototype.fixed()
__webpack_require__(141)('fixed', function (createHTML) {
  return function fixed() {
    return createHTML(this, 'tt', '', '');
  };
});


/***/ }),
/* 146 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.7 String.prototype.fontcolor(color)
__webpack_require__(141)('fontcolor', function (createHTML) {
  return function fontcolor(color) {
    return createHTML(this, 'font', 'color', color);
  };
});


/***/ }),
/* 147 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.8 String.prototype.fontsize(size)
__webpack_require__(141)('fontsize', function (createHTML) {
  return function fontsize(size) {
    return createHTML(this, 'font', 'size', size);
  };
});


/***/ }),
/* 148 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.9 String.prototype.italics()
__webpack_require__(141)('italics', function (createHTML) {
  return function italics() {
    return createHTML(this, 'i', '', '');
  };
});


/***/ }),
/* 149 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.10 String.prototype.link(url)
__webpack_require__(141)('link', function (createHTML) {
  return function link(url) {
    return createHTML(this, 'a', 'href', url);
  };
});


/***/ }),
/* 150 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.11 String.prototype.small()
__webpack_require__(141)('small', function (createHTML) {
  return function small() {
    return createHTML(this, 'small', '', '');
  };
});


/***/ }),
/* 151 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.12 String.prototype.strike()
__webpack_require__(141)('strike', function (createHTML) {
  return function strike() {
    return createHTML(this, 'strike', '', '');
  };
});


/***/ }),
/* 152 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.13 String.prototype.sub()
__webpack_require__(141)('sub', function (createHTML) {
  return function sub() {
    return createHTML(this, 'sub', '', '');
  };
});


/***/ }),
/* 153 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.14 String.prototype.sup()
__webpack_require__(141)('sup', function (createHTML) {
  return function sup() {
    return createHTML(this, 'sup', '', '');
  };
});


/***/ }),
/* 154 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.3.3.1 / 15.9.4.4 Date.now()
var $export = __webpack_require__(8);

$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });


/***/ }),
/* 155 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toObject = __webpack_require__(46);
var toPrimitive = __webpack_require__(16);

$export($export.P + $export.F * __webpack_require__(7)(function () {
  return new Date(NaN).toJSON() !== null
    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
}), 'Date', {
  // eslint-disable-next-line no-unused-vars
  toJSON: function toJSON(key) {
    var O = toObject(this);
    var pv = toPrimitive(O);
    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
  }
});


/***/ }),
/* 156 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
var $export = __webpack_require__(8);
var toISOString = __webpack_require__(157);

// PhantomJS / old WebKit has a broken implementations
$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {
  toISOString: toISOString
});


/***/ }),
/* 157 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
var fails = __webpack_require__(7);
var getTime = Date.prototype.getTime;
var $toISOString = Date.prototype.toISOString;

var lz = function (num) {
  return num > 9 ? num : '0' + num;
};

// PhantomJS / old WebKit has a broken implementations
module.exports = (fails(function () {
  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
}) || !fails(function () {
  $toISOString.call(new Date(NaN));
})) ? function toISOString() {
  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
  var d = this;
  var y = d.getUTCFullYear();
  var m = d.getUTCMilliseconds();
  var s = y < 0 ? '-' : y > 9999 ? '+' : '';
  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
} : $toISOString;


/***/ }),
/* 158 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var DateProto = Date.prototype;
var INVALID_DATE = 'Invalid Date';
var TO_STRING = 'toString';
var $toString = DateProto[TO_STRING];
var getTime = DateProto.getTime;
if (new Date(NaN) + '' != INVALID_DATE) {
  __webpack_require__(18)(DateProto, TO_STRING, function toString() {
    var value = getTime.call(this);
    // eslint-disable-next-line no-self-compare
    return value === value ? $toString.call(this) : INVALID_DATE;
  });
}


/***/ }),
/* 159 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var TO_PRIMITIVE = __webpack_require__(27)('toPrimitive');
var proto = Date.prototype;

if (!(TO_PRIMITIVE in proto)) __webpack_require__(10)(proto, TO_PRIMITIVE, __webpack_require__(160));


/***/ }),
/* 160 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var anObject = __webpack_require__(12);
var toPrimitive = __webpack_require__(16);
var NUMBER = 'number';

module.exports = function (hint) {
  if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');
  return toPrimitive(anObject(this), hint != NUMBER);
};


/***/ }),
/* 161 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(8);

$export($export.S, 'Array', { isArray: __webpack_require__(45) });


/***/ }),
/* 162 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(23);
var $export = __webpack_require__(8);
var toObject = __webpack_require__(46);
var call = __webpack_require__(163);
var isArrayIter = __webpack_require__(164);
var toLength = __webpack_require__(38);
var createProperty = __webpack_require__(165);
var getIterFn = __webpack_require__(166);

$export($export.S + $export.F * !__webpack_require__(167)(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),
/* 163 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(12);
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),
/* 164 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(130);
var ITERATOR = __webpack_require__(27)('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),
/* 165 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(11);
var createDesc = __webpack_require__(17);

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),
/* 166 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(75);
var ITERATOR = __webpack_require__(27)('iterator');
var Iterators = __webpack_require__(130);
module.exports = __webpack_require__(9).getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),
/* 167 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(27)('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),
/* 168 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var createProperty = __webpack_require__(165);

// WebKit Array.of isn't generic
$export($export.S + $export.F * __webpack_require__(7)(function () {
  function F() { /* empty */ }
  return !(Array.of.call(F) instanceof F);
}), 'Array', {
  // 22.1.2.3 Array.of( ...items)
  of: function of(/* ...args */) {
    var index = 0;
    var aLen = arguments.length;
    var result = new (typeof this == 'function' ? this : Array)(aLen);
    while (aLen > index) createProperty(result, index, arguments[index++]);
    result.length = aLen;
    return result;
  }
});


/***/ }),
/* 169 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.13 Array.prototype.join(separator)
var $export = __webpack_require__(8);
var toIObject = __webpack_require__(33);
var arrayJoin = [].join;

// fallback for not array-like strings
$export($export.P + $export.F * (__webpack_require__(34) != Object || !__webpack_require__(170)(arrayJoin)), 'Array', {
  join: function join(separator) {
    return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
  }
});


/***/ }),
/* 170 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(7);

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),
/* 171 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var html = __webpack_require__(49);
var cof = __webpack_require__(35);
var toAbsoluteIndex = __webpack_require__(40);
var toLength = __webpack_require__(38);
var arraySlice = [].slice;

// fallback for not array-like ES3 strings and DOM objects
$export($export.P + $export.F * __webpack_require__(7)(function () {
  if (html) arraySlice.call(html);
}), 'Array', {
  slice: function slice(begin, end) {
    var len = toLength(this.length);
    var klass = cof(this);
    end = end === undefined ? len : end;
    if (klass == 'Array') return arraySlice.call(this, begin, end);
    var start = toAbsoluteIndex(begin, len);
    var upTo = toAbsoluteIndex(end, len);
    var size = toLength(upTo - start);
    var cloned = new Array(size);
    var i = 0;
    for (; i < size; i++) cloned[i] = klass == 'String'
      ? this.charAt(start + i)
      : this[start + i];
    return cloned;
  }
});


/***/ }),
/* 172 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var aFunction = __webpack_require__(24);
var toObject = __webpack_require__(46);
var fails = __webpack_require__(7);
var $sort = [].sort;
var test = [1, 2, 3];

$export($export.P + $export.F * (fails(function () {
  // IE8-
  test.sort(undefined);
}) || !fails(function () {
  // V8 bug
  test.sort(null);
  // Old WebKit
}) || !__webpack_require__(170)($sort)), 'Array', {
  // 22.1.3.25 Array.prototype.sort(comparefn)
  sort: function sort(comparefn) {
    return comparefn === undefined
      ? $sort.call(toObject(this))
      : $sort.call(toObject(this), aFunction(comparefn));
  }
});


/***/ }),
/* 173 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $forEach = __webpack_require__(174)(0);
var STRICT = __webpack_require__(170)([].forEach, true);

$export($export.P + $export.F * !STRICT, 'Array', {
  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
  forEach: function forEach(callbackfn /* , thisArg */) {
    return $forEach(this, callbackfn, arguments[1]);
  }
});


/***/ }),
/* 174 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(23);
var IObject = __webpack_require__(34);
var toObject = __webpack_require__(46);
var toLength = __webpack_require__(38);
var asc = __webpack_require__(175);
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),
/* 175 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(176);

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),
/* 176 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(13);
var isArray = __webpack_require__(45);
var SPECIES = __webpack_require__(27)('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),
/* 177 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $map = __webpack_require__(174)(1);

$export($export.P + $export.F * !__webpack_require__(170)([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),
/* 178 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $filter = __webpack_require__(174)(2);

$export($export.P + $export.F * !__webpack_require__(170)([].filter, true), 'Array', {
  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
  filter: function filter(callbackfn /* , thisArg */) {
    return $filter(this, callbackfn, arguments[1]);
  }
});


/***/ }),
/* 179 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $some = __webpack_require__(174)(3);

$export($export.P + $export.F * !__webpack_require__(170)([].some, true), 'Array', {
  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
  some: function some(callbackfn /* , thisArg */) {
    return $some(this, callbackfn, arguments[1]);
  }
});


/***/ }),
/* 180 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $every = __webpack_require__(174)(4);

$export($export.P + $export.F * !__webpack_require__(170)([].every, true), 'Array', {
  // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
  every: function every(callbackfn /* , thisArg */) {
    return $every(this, callbackfn, arguments[1]);
  }
});


/***/ }),
/* 181 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $reduce = __webpack_require__(182);

$export($export.P + $export.F * !__webpack_require__(170)([].reduce, true), 'Array', {
  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
  reduce: function reduce(callbackfn /* , initialValue */) {
    return $reduce(this, callbackfn, arguments.length, arguments[1], false);
  }
});


/***/ }),
/* 182 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var aFunction = __webpack_require__(24);
var toObject = __webpack_require__(46);
var IObject = __webpack_require__(34);
var toLength = __webpack_require__(38);

module.exports = function (that, callbackfn, aLen, memo, isRight) {
  aFunction(callbackfn);
  var O = toObject(that);
  var self = IObject(O);
  var length = toLength(O.length);
  var index = isRight ? length - 1 : 0;
  var i = isRight ? -1 : 1;
  if (aLen < 2) for (;;) {
    if (index in self) {
      memo = self[index];
      index += i;
      break;
    }
    index += i;
    if (isRight ? index < 0 : length <= index) {
      throw TypeError('Reduce of empty array with no initial value');
    }
  }
  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
    memo = callbackfn(memo, self[index], index, O);
  }
  return memo;
};


/***/ }),
/* 183 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $reduce = __webpack_require__(182);

$export($export.P + $export.F * !__webpack_require__(170)([].reduceRight, true), 'Array', {
  // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
    return $reduce(this, callbackfn, arguments.length, arguments[1], true);
  }
});


/***/ }),
/* 184 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $indexOf = __webpack_require__(37)(false);
var $native = [].indexOf;
var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;

$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(170)($native)), 'Array', {
  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
    return NEGATIVE_ZERO
      // convert -0 to +0
      ? $native.apply(this, arguments) || 0
      : $indexOf(this, searchElement, arguments[1]);
  }
});


/***/ }),
/* 185 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toIObject = __webpack_require__(33);
var toInteger = __webpack_require__(39);
var toLength = __webpack_require__(38);
var $native = [].lastIndexOf;
var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;

$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(170)($native)), 'Array', {
  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
  lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
    // convert -0 to +0
    if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
    var O = toIObject(this);
    var length = toLength(O.length);
    var index = length - 1;
    if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
    if (index < 0) index = length + index;
    for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
    return -1;
  }
});


/***/ }),
/* 186 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
var $export = __webpack_require__(8);

$export($export.P, 'Array', { copyWithin: __webpack_require__(187) });

__webpack_require__(188)('copyWithin');


/***/ }),
/* 187 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)

var toObject = __webpack_require__(46);
var toAbsoluteIndex = __webpack_require__(40);
var toLength = __webpack_require__(38);

module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
  var O = toObject(this);
  var len = toLength(O.length);
  var to = toAbsoluteIndex(target, len);
  var from = toAbsoluteIndex(start, len);
  var end = arguments.length > 2 ? arguments[2] : undefined;
  var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
  var inc = 1;
  if (from < to && to < from + count) {
    inc = -1;
    from += count - 1;
    to += count - 1;
  }
  while (count-- > 0) {
    if (from in O) O[to] = O[from];
    else delete O[to];
    to += inc;
    from += inc;
  } return O;
};


/***/ }),
/* 188 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(27)('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(10)(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),
/* 189 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
var $export = __webpack_require__(8);

$export($export.P, 'Array', { fill: __webpack_require__(190) });

__webpack_require__(188)('fill');


/***/ }),
/* 190 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)

var toObject = __webpack_require__(46);
var toAbsoluteIndex = __webpack_require__(40);
var toLength = __webpack_require__(38);
module.exports = function fill(value /* , start = 0, end = @length */) {
  var O = toObject(this);
  var length = toLength(O.length);
  var aLen = arguments.length;
  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);
  var end = aLen > 2 ? arguments[2] : undefined;
  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
  while (endPos > index) O[index++] = value;
  return O;
};


/***/ }),
/* 191 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(8);
var $find = __webpack_require__(174)(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(188)(KEY);


/***/ }),
/* 192 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
var $export = __webpack_require__(8);
var $find = __webpack_require__(174)(6);
var KEY = 'findIndex';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  findIndex: function findIndex(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(188)(KEY);


/***/ }),
/* 193 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(194)('Array');


/***/ }),
/* 194 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(4);
var dP = __webpack_require__(11);
var DESCRIPTORS = __webpack_require__(6);
var SPECIES = __webpack_require__(27)('species');

module.exports = function (KEY) {
  var C = global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),
/* 195 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(188);
var step = __webpack_require__(196);
var Iterators = __webpack_require__(130);
var toIObject = __webpack_require__(33);

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(129)(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),
/* 196 */
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),
/* 197 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var inheritIfRequired = __webpack_require__(88);
var dP = __webpack_require__(11).f;
var gOPN = __webpack_require__(51).f;
var isRegExp = __webpack_require__(135);
var $flags = __webpack_require__(198);
var $RegExp = global.RegExp;
var Base = $RegExp;
var proto = $RegExp.prototype;
var re1 = /a/g;
var re2 = /a/g;
// "new" creates a new object, old webkit buggy here
var CORRECT_NEW = new $RegExp(re1) !== re1;

if (__webpack_require__(6) && (!CORRECT_NEW || __webpack_require__(7)(function () {
  re2[__webpack_require__(27)('match')] = false;
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
}))) {
  $RegExp = function RegExp(p, f) {
    var tiRE = this instanceof $RegExp;
    var piRE = isRegExp(p);
    var fiU = f === undefined;
    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
      : inheritIfRequired(CORRECT_NEW
        ? new Base(piRE && !fiU ? p.source : p, f)
        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
      , tiRE ? this : proto, $RegExp);
  };
  var proxy = function (key) {
    key in $RegExp || dP($RegExp, key, {
      configurable: true,
      get: function () { return Base[key]; },
      set: function (it) { Base[key] = it; }
    });
  };
  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
  proto.constructor = $RegExp;
  $RegExp.prototype = proto;
  __webpack_require__(18)(global, 'RegExp', $RegExp);
}

__webpack_require__(194)('RegExp');


/***/ }),
/* 198 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(12);
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),
/* 199 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var regexpExec = __webpack_require__(200);
__webpack_require__(8)({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),
/* 200 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var regexpFlags = __webpack_require__(198);

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),
/* 201 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(202);
var anObject = __webpack_require__(12);
var $flags = __webpack_require__(198);
var DESCRIPTORS = __webpack_require__(6);
var TO_STRING = 'toString';
var $toString = /./[TO_STRING];

var define = function (fn) {
  __webpack_require__(18)(RegExp.prototype, TO_STRING, fn, true);
};

// 21.2.5.14 RegExp.prototype.toString()
if (__webpack_require__(7)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
  define(function toString() {
    var R = anObject(this);
    return '/'.concat(R.source, '/',
      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  });
// FF44- RegExp#toString has a wrong name
} else if ($toString.name != TO_STRING) {
  define(function toString() {
    return $toString.call(this);
  });
}


/***/ }),
/* 202 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 21.2.5.3 get RegExp.prototype.flags()
if (__webpack_require__(6) && /./g.flags != 'g') __webpack_require__(11).f(RegExp.prototype, 'flags', {
  configurable: true,
  get: __webpack_require__(198)
});


/***/ }),
/* 203 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(12);
var toLength = __webpack_require__(38);
var advanceStringIndex = __webpack_require__(204);
var regExpExec = __webpack_require__(205);

// @@match logic
__webpack_require__(206)('match', 1, function (defined, MATCH, $match, maybeCallNative) {
  return [
    // `String.prototype.match` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.match
    function match(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[MATCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
    },
    // `RegExp.prototype[@@match]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
    function (regexp) {
      var res = maybeCallNative($match, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      if (!rx.global) return regExpExec(rx, S);
      var fullUnicode = rx.unicode;
      rx.lastIndex = 0;
      var A = [];
      var n = 0;
      var result;
      while ((result = regExpExec(rx, S)) !== null) {
        var matchStr = String(result[0]);
        A[n] = matchStr;
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
        n++;
      }
      return n === 0 ? null : A;
    }
  ];
});


/***/ }),
/* 204 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var at = __webpack_require__(128)(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),
/* 205 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var classof = __webpack_require__(75);
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),
/* 206 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(199);
var redefine = __webpack_require__(18);
var hide = __webpack_require__(10);
var fails = __webpack_require__(7);
var defined = __webpack_require__(36);
var wks = __webpack_require__(27);
var regexpExec = __webpack_require__(200);

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),
/* 207 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(12);
var toObject = __webpack_require__(46);
var toLength = __webpack_require__(38);
var toInteger = __webpack_require__(39);
var advanceStringIndex = __webpack_require__(204);
var regExpExec = __webpack_require__(205);
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(206)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),
/* 208 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(12);
var sameValue = __webpack_require__(71);
var regExpExec = __webpack_require__(205);

// @@search logic
__webpack_require__(206)('search', 1, function (defined, SEARCH, $search, maybeCallNative) {
  return [
    // `String.prototype.search` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.search
    function search(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[SEARCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
    },
    // `RegExp.prototype[@@search]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
    function (regexp) {
      var res = maybeCallNative($search, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      var previousLastIndex = rx.lastIndex;
      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
      var result = regExpExec(rx, S);
      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
      return result === null ? -1 : result.index;
    }
  ];
});


/***/ }),
/* 209 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var isRegExp = __webpack_require__(135);
var anObject = __webpack_require__(12);
var speciesConstructor = __webpack_require__(210);
var advanceStringIndex = __webpack_require__(204);
var toLength = __webpack_require__(38);
var callRegExpExec = __webpack_require__(205);
var regexpExec = __webpack_require__(200);
var fails = __webpack_require__(7);
var $min = Math.min;
var $push = [].push;
var $SPLIT = 'split';
var LENGTH = 'length';
var LAST_INDEX = 'lastIndex';
var MAX_UINT32 = 0xffffffff;

// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });

// @@split logic
__webpack_require__(206)('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
  var internalSplit;
  if (
    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
    ''[$SPLIT](/.?/)[LENGTH]
  ) {
    // based on es5-shim implementation, need to rework it
    internalSplit = function (separator, limit) {
      var string = String(this);
      if (separator === undefined && limit === 0) return [];
      // If `separator` is not a regex, use native split
      if (!isRegExp(separator)) return $split.call(string, separator, limit);
      var output = [];
      var flags = (separator.ignoreCase ? 'i' : '') +
                  (separator.multiline ? 'm' : '') +
                  (separator.unicode ? 'u' : '') +
                  (separator.sticky ? 'y' : '');
      var lastLastIndex = 0;
      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
      // Make `global` and avoid `lastIndex` issues by working with a copy
      var separatorCopy = new RegExp(separator.source, flags + 'g');
      var match, lastIndex, lastLength;
      while (match = regexpExec.call(separatorCopy, string)) {
        lastIndex = separatorCopy[LAST_INDEX];
        if (lastIndex > lastLastIndex) {
          output.push(string.slice(lastLastIndex, match.index));
          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
          lastLength = match[0][LENGTH];
          lastLastIndex = lastIndex;
          if (output[LENGTH] >= splitLimit) break;
        }
        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
      }
      if (lastLastIndex === string[LENGTH]) {
        if (lastLength || !separatorCopy.test('')) output.push('');
      } else output.push(string.slice(lastLastIndex));
      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
    };
  // Chakra, V8
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
    internalSplit = function (separator, limit) {
      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
    };
  } else {
    internalSplit = $split;
  }

  return [
    // `String.prototype.split` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.split
    function split(separator, limit) {
      var O = defined(this);
      var splitter = separator == undefined ? undefined : separator[SPLIT];
      return splitter !== undefined
        ? splitter.call(separator, O, limit)
        : internalSplit.call(String(O), separator, limit);
    },
    // `RegExp.prototype[@@split]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
    //
    // NOTE: This cannot be properly polyfilled in engines that don't support
    // the 'y' flag.
    function (regexp, limit) {
      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var C = speciesConstructor(rx, RegExp);

      var unicodeMatching = rx.unicode;
      var flags = (rx.ignoreCase ? 'i' : '') +
                  (rx.multiline ? 'm' : '') +
                  (rx.unicode ? 'u' : '') +
                  (SUPPORTS_Y ? 'y' : 'g');

      // ^(? + rx + ) is needed, in combination with some S slicing, to
      // simulate the 'y' flag.
      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
      if (lim === 0) return [];
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
      var p = 0;
      var q = 0;
      var A = [];
      while (q < S.length) {
        splitter.lastIndex = SUPPORTS_Y ? q : 0;
        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
        var e;
        if (
          z === null ||
          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
        ) {
          q = advanceStringIndex(S, q, unicodeMatching);
        } else {
          A.push(S.slice(p, q));
          if (A.length === lim) return A;
          for (var i = 1; i <= z.length - 1; i++) {
            A.push(z[i]);
            if (A.length === lim) return A;
          }
          q = p = e;
        }
      }
      A.push(S.slice(p));
      return A;
    }
  ];
});


/***/ }),
/* 210 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(12);
var aFunction = __webpack_require__(24);
var SPECIES = __webpack_require__(27)('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),
/* 211 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(22);
var global = __webpack_require__(4);
var ctx = __webpack_require__(23);
var classof = __webpack_require__(75);
var $export = __webpack_require__(8);
var isObject = __webpack_require__(13);
var aFunction = __webpack_require__(24);
var anInstance = __webpack_require__(212);
var forOf = __webpack_require__(213);
var speciesConstructor = __webpack_require__(210);
var task = __webpack_require__(214).set;
var microtask = __webpack_require__(215)();
var newPromiseCapabilityModule = __webpack_require__(216);
var perform = __webpack_require__(217);
var userAgent = __webpack_require__(218);
var promiseResolve = __webpack_require__(219);
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(27)('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(220)($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(26)($Promise, PROMISE);
__webpack_require__(194)(PROMISE);
Wrapper = __webpack_require__(9)[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(167)(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),
/* 212 */
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),
/* 213 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(23);
var call = __webpack_require__(163);
var isArrayIter = __webpack_require__(164);
var anObject = __webpack_require__(12);
var toLength = __webpack_require__(38);
var getIterFn = __webpack_require__(166);
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),
/* 214 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(23);
var invoke = __webpack_require__(78);
var html = __webpack_require__(49);
var cel = __webpack_require__(15);
var global = __webpack_require__(4);
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(35)(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),
/* 215 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var macrotask = __webpack_require__(214).set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(35)(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),
/* 216 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(24);

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),
/* 217 */
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),
/* 218 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),
/* 219 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(12);
var isObject = __webpack_require__(13);
var newPromiseCapability = __webpack_require__(216);

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),
/* 220 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var redefine = __webpack_require__(18);
module.exports = function (target, src, safe) {
  for (var key in src) redefine(target, key, src[key], safe);
  return target;
};


/***/ }),
/* 221 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var strong = __webpack_require__(222);
var validate = __webpack_require__(223);
var MAP = 'Map';

// 23.1 Map Objects
module.exports = __webpack_require__(224)(MAP, function (get) {
  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
}, {
  // 23.1.3.6 Map.prototype.get(key)
  get: function get(key) {
    var entry = strong.getEntry(validate(this, MAP), key);
    return entry && entry.v;
  },
  // 23.1.3.9 Map.prototype.set(key, value)
  set: function set(key, value) {
    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
  }
}, strong, true);


/***/ }),
/* 222 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var dP = __webpack_require__(11).f;
var create = __webpack_require__(47);
var redefineAll = __webpack_require__(220);
var ctx = __webpack_require__(23);
var anInstance = __webpack_require__(212);
var forOf = __webpack_require__(213);
var $iterDefine = __webpack_require__(129);
var step = __webpack_require__(196);
var setSpecies = __webpack_require__(194);
var DESCRIPTORS = __webpack_require__(6);
var fastKey = __webpack_require__(25).fastKey;
var validate = __webpack_require__(223);
var SIZE = DESCRIPTORS ? '_s' : 'size';

var getEntry = function (that, key) {
  // fast case
  var index = fastKey(key);
  var entry;
  if (index !== 'F') return that._i[index];
  // frozen object case
  for (entry = that._f; entry; entry = entry.n) {
    if (entry.k == key) return entry;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;         // collection type
      that._i = create(null); // index
      that._f = undefined;    // first entry
      that._l = undefined;    // last entry
      that[SIZE] = 0;         // size
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.1.3.1 Map.prototype.clear()
      // 23.2.3.2 Set.prototype.clear()
      clear: function clear() {
        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
          entry.r = true;
          if (entry.p) entry.p = entry.p.n = undefined;
          delete data[entry.i];
        }
        that._f = that._l = undefined;
        that[SIZE] = 0;
      },
      // 23.1.3.3 Map.prototype.delete(key)
      // 23.2.3.4 Set.prototype.delete(value)
      'delete': function (key) {
        var that = validate(this, NAME);
        var entry = getEntry(that, key);
        if (entry) {
          var next = entry.n;
          var prev = entry.p;
          delete that._i[entry.i];
          entry.r = true;
          if (prev) prev.n = next;
          if (next) next.p = prev;
          if (that._f == entry) that._f = next;
          if (that._l == entry) that._l = prev;
          that[SIZE]--;
        } return !!entry;
      },
      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
      forEach: function forEach(callbackfn /* , that = undefined */) {
        validate(this, NAME);
        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
        var entry;
        while (entry = entry ? entry.n : this._f) {
          f(entry.v, entry.k, this);
          // revert to the last existing entry
          while (entry && entry.r) entry = entry.p;
        }
      },
      // 23.1.3.7 Map.prototype.has(key)
      // 23.2.3.7 Set.prototype.has(value)
      has: function has(key) {
        return !!getEntry(validate(this, NAME), key);
      }
    });
    if (DESCRIPTORS) dP(C.prototype, 'size', {
      get: function () {
        return validate(this, NAME)[SIZE];
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var entry = getEntry(that, key);
    var prev, index;
    // change existing entry
    if (entry) {
      entry.v = value;
    // create new entry
    } else {
      that._l = entry = {
        i: index = fastKey(key, true), // <- index
        k: key,                        // <- key
        v: value,                      // <- value
        p: prev = that._l,             // <- previous entry
        n: undefined,                  // <- next entry
        r: false                       // <- removed
      };
      if (!that._f) that._f = entry;
      if (prev) prev.n = entry;
      that[SIZE]++;
      // add to index
      if (index !== 'F') that._i[index] = entry;
    } return that;
  },
  getEntry: getEntry,
  setStrong: function (C, NAME, IS_MAP) {
    // add .keys, .values, .entries, [@@iterator]
    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
    $iterDefine(C, NAME, function (iterated, kind) {
      this._t = validate(iterated, NAME); // target
      this._k = kind;                     // kind
      this._l = undefined;                // previous
    }, function () {
      var that = this;
      var kind = that._k;
      var entry = that._l;
      // revert to the last existing entry
      while (entry && entry.r) entry = entry.p;
      // get next entry
      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
        // or finish the iteration
        that._t = undefined;
        return step(1);
      }
      // return step by kind
      if (kind == 'keys') return step(0, entry.k);
      if (kind == 'values') return step(0, entry.v);
      return step(0, [entry.k, entry.v]);
    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);

    // add [@@species], 23.1.2.2, 23.2.2.2
    setSpecies(NAME);
  }
};


/***/ }),
/* 223 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(13);
module.exports = function (it, TYPE) {
  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
  return it;
};


/***/ }),
/* 224 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(4);
var $export = __webpack_require__(8);
var redefine = __webpack_require__(18);
var redefineAll = __webpack_require__(220);
var meta = __webpack_require__(25);
var forOf = __webpack_require__(213);
var anInstance = __webpack_require__(212);
var isObject = __webpack_require__(13);
var fails = __webpack_require__(7);
var $iterDetect = __webpack_require__(167);
var setToStringTag = __webpack_require__(26);
var inheritIfRequired = __webpack_require__(88);

module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  var Base = global[NAME];
  var C = Base;
  var ADDER = IS_MAP ? 'set' : 'add';
  var proto = C && C.prototype;
  var O = {};
  var fixMethod = function (KEY) {
    var fn = proto[KEY];
    redefine(proto, KEY,
      KEY == 'delete' ? function (a) {
        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
      } : KEY == 'has' ? function has(a) {
        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
      } : KEY == 'get' ? function get(a) {
        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
    );
  };
  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
    new C().entries().next();
  }))) {
    // create collection constructor
    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
    redefineAll(C.prototype, methods);
    meta.NEED = true;
  } else {
    var instance = new C();
    // early implementations not supports chaining
    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false
    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
    // most early implementations doesn't supports iterables, most modern - not close it correctly
    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
    // for early implementations -0 and +0 not the same
    var BUGGY_ZERO = !IS_WEAK && fails(function () {
      // V8 ~ Chromium 42- fails only with 5+ elements
      var $instance = new C();
      var index = 5;
      while (index--) $instance[ADDER](index, index);
      return !$instance.has(-0);
    });
    if (!ACCEPT_ITERABLES) {
      C = wrapper(function (target, iterable) {
        anInstance(target, C, NAME);
        var that = inheritIfRequired(new Base(), target, C);
        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
        return that;
      });
      C.prototype = proto;
      proto.constructor = C;
    }
    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
      fixMethod('delete');
      fixMethod('has');
      IS_MAP && fixMethod('get');
    }
    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
    // weak collections should not contains .clear method
    if (IS_WEAK && proto.clear) delete proto.clear;
  }

  setToStringTag(C, NAME);

  O[NAME] = C;
  $export($export.G + $export.W + $export.F * (C != Base), O);

  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

  return C;
};


/***/ }),
/* 225 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var strong = __webpack_require__(222);
var validate = __webpack_require__(223);
var SET = 'Set';

// 23.2 Set Objects
module.exports = __webpack_require__(224)(SET, function (get) {
  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
}, {
  // 23.2.3.1 Set.prototype.add(value)
  add: function add(value) {
    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
  }
}, strong);


/***/ }),
/* 226 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(4);
var each = __webpack_require__(174)(0);
var redefine = __webpack_require__(18);
var meta = __webpack_require__(25);
var assign = __webpack_require__(69);
var weak = __webpack_require__(227);
var isObject = __webpack_require__(13);
var validate = __webpack_require__(223);
var NATIVE_WEAK_MAP = __webpack_require__(223);
var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var InternalMap;

var wrapper = function (get) {
  return function WeakMap() {
    return get(this, arguments.length > 0 ? arguments[0] : undefined);
  };
};

var methods = {
  // 23.3.3.3 WeakMap.prototype.get(key)
  get: function get(key) {
    if (isObject(key)) {
      var data = getWeak(key);
      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
      return data ? data[this._i] : undefined;
    }
  },
  // 23.3.3.5 WeakMap.prototype.set(key, value)
  set: function set(key, value) {
    return weak.def(validate(this, WEAK_MAP), key, value);
  }
};

// 23.3 WeakMap Objects
var $WeakMap = module.exports = __webpack_require__(224)(WEAK_MAP, wrapper, methods, weak, true, true);

// IE11 WeakMap frozen keys fix
if (NATIVE_WEAK_MAP && IS_IE11) {
  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
  assign(InternalMap.prototype, methods);
  meta.NEED = true;
  each(['delete', 'has', 'get', 'set'], function (key) {
    var proto = $WeakMap.prototype;
    var method = proto[key];
    redefine(proto, key, function (a, b) {
      // store frozen objects on internal weakmap shim
      if (isObject(a) && !isExtensible(a)) {
        if (!this._f) this._f = new InternalMap();
        var result = this._f[key](a, b);
        return key == 'set' ? this : result;
      // store all the rest on native weakmap
      } return method.call(this, a, b);
    });
  });
}


/***/ }),
/* 227 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var redefineAll = __webpack_require__(220);
var getWeak = __webpack_require__(25).getWeak;
var anObject = __webpack_require__(12);
var isObject = __webpack_require__(13);
var anInstance = __webpack_require__(212);
var forOf = __webpack_require__(213);
var createArrayMethod = __webpack_require__(174);
var $has = __webpack_require__(5);
var validate = __webpack_require__(223);
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;

// fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) {
  return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function () {
  this.a = [];
};
var findUncaughtFrozen = function (store, key) {
  return arrayFind(store.a, function (it) {
    return it[0] === key;
  });
};
UncaughtFrozenStore.prototype = {
  get: function (key) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) return entry[1];
  },
  has: function (key) {
    return !!findUncaughtFrozen(this, key);
  },
  set: function (key, value) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) entry[1] = value;
    else this.a.push([key, value]);
  },
  'delete': function (key) {
    var index = arrayFindIndex(this.a, function (it) {
      return it[0] === key;
    });
    if (~index) this.a.splice(index, 1);
    return !!~index;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;      // collection type
      that._i = id++;      // collection id
      that._l = undefined; // leak store for uncaught frozen objects
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.3.3.2 WeakMap.prototype.delete(key)
      // 23.4.3.3 WeakSet.prototype.delete(value)
      'delete': function (key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
        return data && $has(data, this._i) && delete data[this._i];
      },
      // 23.3.3.4 WeakMap.prototype.has(key)
      // 23.4.3.4 WeakSet.prototype.has(value)
      has: function has(key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
        return data && $has(data, this._i);
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var data = getWeak(anObject(key), true);
    if (data === true) uncaughtFrozenStore(that).set(key, value);
    else data[that._i] = value;
    return that;
  },
  ufstore: uncaughtFrozenStore
};


/***/ }),
/* 228 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var weak = __webpack_require__(227);
var validate = __webpack_require__(223);
var WEAK_SET = 'WeakSet';

// 23.4 WeakSet Objects
__webpack_require__(224)(WEAK_SET, function (get) {
  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
}, {
  // 23.4.3.1 WeakSet.prototype.add(value)
  add: function add(value) {
    return weak.def(validate(this, WEAK_SET), value, true);
  }
}, weak, false, true);


/***/ }),
/* 229 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var $typed = __webpack_require__(230);
var buffer = __webpack_require__(231);
var anObject = __webpack_require__(12);
var toAbsoluteIndex = __webpack_require__(40);
var toLength = __webpack_require__(38);
var isObject = __webpack_require__(13);
var ArrayBuffer = __webpack_require__(4).ArrayBuffer;
var speciesConstructor = __webpack_require__(210);
var $ArrayBuffer = buffer.ArrayBuffer;
var $DataView = buffer.DataView;
var $isView = $typed.ABV && ArrayBuffer.isView;
var $slice = $ArrayBuffer.prototype.slice;
var VIEW = $typed.VIEW;
var ARRAY_BUFFER = 'ArrayBuffer';

$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });

$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
  // 24.1.3.1 ArrayBuffer.isView(arg)
  isView: function isView(it) {
    return $isView && $isView(it) || isObject(it) && VIEW in it;
  }
});

$export($export.P + $export.U + $export.F * __webpack_require__(7)(function () {
  return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
}), ARRAY_BUFFER, {
  // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
  slice: function slice(start, end) {
    if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
    var len = anObject(this).byteLength;
    var first = toAbsoluteIndex(start, len);
    var fin = toAbsoluteIndex(end === undefined ? len : end, len);
    var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));
    var viewS = new $DataView(this);
    var viewT = new $DataView(result);
    var index = 0;
    while (first < fin) {
      viewT.setUint8(index++, viewS.getUint8(first++));
    } return result;
  }
});

__webpack_require__(194)(ARRAY_BUFFER);


/***/ }),
/* 230 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(4);
var hide = __webpack_require__(10);
var uid = __webpack_require__(19);
var TYPED = uid('typed_array');
var VIEW = uid('view');
var ABV = !!(global.ArrayBuffer && global.DataView);
var CONSTR = ABV;
var i = 0;
var l = 9;
var Typed;

var TypedArrayConstructors = (
  'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
).split(',');

while (i < l) {
  if (Typed = global[TypedArrayConstructors[i++]]) {
    hide(Typed.prototype, TYPED, true);
    hide(Typed.prototype, VIEW, true);
  } else CONSTR = false;
}

module.exports = {
  ABV: ABV,
  CONSTR: CONSTR,
  TYPED: TYPED,
  VIEW: VIEW
};


/***/ }),
/* 231 */
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(4);
var DESCRIPTORS = __webpack_require__(6);
var LIBRARY = __webpack_require__(22);
var $typed = __webpack_require__(230);
var hide = __webpack_require__(10);
var redefineAll = __webpack_require__(220);
var fails = __webpack_require__(7);
var anInstance = __webpack_require__(212);
var toInteger = __webpack_require__(39);
var toLength = __webpack_require__(38);
var toIndex = __webpack_require__(232);
var gOPN = __webpack_require__(51).f;
var dP = __webpack_require__(11).f;
var arrayFill = __webpack_require__(190);
var setToStringTag = __webpack_require__(26);
var ARRAY_BUFFER = 'ArrayBuffer';
var DATA_VIEW = 'DataView';
var PROTOTYPE = 'prototype';
var WRONG_LENGTH = 'Wrong length!';
var WRONG_INDEX = 'Wrong index!';
var $ArrayBuffer = global[ARRAY_BUFFER];
var $DataView = global[DATA_VIEW];
var Math = global.Math;
var RangeError = global.RangeError;
// eslint-disable-next-line no-shadow-restricted-names
var Infinity = global.Infinity;
var BaseBuffer = $ArrayBuffer;
var abs = Math.abs;
var pow = Math.pow;
var floor = Math.floor;
var log = Math.log;
var LN2 = Math.LN2;
var BUFFER = 'buffer';
var BYTE_LENGTH = 'byteLength';
var BYTE_OFFSET = 'byteOffset';
var $BUFFER = DESCRIPTORS ? '_b' : BUFFER;
var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;
var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;

// IEEE754 conversions based on https://github.com/feross/ieee754
function packIEEE754(value, mLen, nBytes) {
  var buffer = new Array(nBytes);
  var eLen = nBytes * 8 - mLen - 1;
  var eMax = (1 << eLen) - 1;
  var eBias = eMax >> 1;
  var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;
  var i = 0;
  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
  var e, m, c;
  value = abs(value);
  // eslint-disable-next-line no-self-compare
  if (value != value || value === Infinity) {
    // eslint-disable-next-line no-self-compare
    m = value != value ? 1 : 0;
    e = eMax;
  } else {
    e = floor(log(value) / LN2);
    if (value * (c = pow(2, -e)) < 1) {
      e--;
      c *= 2;
    }
    if (e + eBias >= 1) {
      value += rt / c;
    } else {
      value += rt * pow(2, 1 - eBias);
    }
    if (value * c >= 2) {
      e++;
      c /= 2;
    }
    if (e + eBias >= eMax) {
      m = 0;
      e = eMax;
    } else if (e + eBias >= 1) {
      m = (value * c - 1) * pow(2, mLen);
      e = e + eBias;
    } else {
      m = value * pow(2, eBias - 1) * pow(2, mLen);
      e = 0;
    }
  }
  for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
  e = e << mLen | m;
  eLen += mLen;
  for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
  buffer[--i] |= s * 128;
  return buffer;
}
function unpackIEEE754(buffer, mLen, nBytes) {
  var eLen = nBytes * 8 - mLen - 1;
  var eMax = (1 << eLen) - 1;
  var eBias = eMax >> 1;
  var nBits = eLen - 7;
  var i = nBytes - 1;
  var s = buffer[i--];
  var e = s & 127;
  var m;
  s >>= 7;
  for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
  m = e & (1 << -nBits) - 1;
  e >>= -nBits;
  nBits += mLen;
  for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
  if (e === 0) {
    e = 1 - eBias;
  } else if (e === eMax) {
    return m ? NaN : s ? -Infinity : Infinity;
  } else {
    m = m + pow(2, mLen);
    e = e - eBias;
  } return (s ? -1 : 1) * m * pow(2, e - mLen);
}

function unpackI32(bytes) {
  return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
}
function packI8(it) {
  return [it & 0xff];
}
function packI16(it) {
  return [it & 0xff, it >> 8 & 0xff];
}
function packI32(it) {
  return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
}
function packF64(it) {
  return packIEEE754(it, 52, 8);
}
function packF32(it) {
  return packIEEE754(it, 23, 4);
}

function addGetter(C, key, internal) {
  dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });
}

function get(view, bytes, index, isLittleEndian) {
  var numIndex = +index;
  var intIndex = toIndex(numIndex);
  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
  var store = view[$BUFFER]._b;
  var start = intIndex + view[$OFFSET];
  var pack = store.slice(start, start + bytes);
  return isLittleEndian ? pack : pack.reverse();
}
function set(view, bytes, index, conversion, value, isLittleEndian) {
  var numIndex = +index;
  var intIndex = toIndex(numIndex);
  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
  var store = view[$BUFFER]._b;
  var start = intIndex + view[$OFFSET];
  var pack = conversion(+value);
  for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
}

if (!$typed.ABV) {
  $ArrayBuffer = function ArrayBuffer(length) {
    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
    var byteLength = toIndex(length);
    this._b = arrayFill.call(new Array(byteLength), 0);
    this[$LENGTH] = byteLength;
  };

  $DataView = function DataView(buffer, byteOffset, byteLength) {
    anInstance(this, $DataView, DATA_VIEW);
    anInstance(buffer, $ArrayBuffer, DATA_VIEW);
    var bufferLength = buffer[$LENGTH];
    var offset = toInteger(byteOffset);
    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');
    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
    this[$BUFFER] = buffer;
    this[$OFFSET] = offset;
    this[$LENGTH] = byteLength;
  };

  if (DESCRIPTORS) {
    addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
    addGetter($DataView, BUFFER, '_b');
    addGetter($DataView, BYTE_LENGTH, '_l');
    addGetter($DataView, BYTE_OFFSET, '_o');
  }

  redefineAll($DataView[PROTOTYPE], {
    getInt8: function getInt8(byteOffset) {
      return get(this, 1, byteOffset)[0] << 24 >> 24;
    },
    getUint8: function getUint8(byteOffset) {
      return get(this, 1, byteOffset)[0];
    },
    getInt16: function getInt16(byteOffset /* , littleEndian */) {
      var bytes = get(this, 2, byteOffset, arguments[1]);
      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
    },
    getUint16: function getUint16(byteOffset /* , littleEndian */) {
      var bytes = get(this, 2, byteOffset, arguments[1]);
      return bytes[1] << 8 | bytes[0];
    },
    getInt32: function getInt32(byteOffset /* , littleEndian */) {
      return unpackI32(get(this, 4, byteOffset, arguments[1]));
    },
    getUint32: function getUint32(byteOffset /* , littleEndian */) {
      return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
    },
    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
      return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
    },
    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
      return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
    },
    setInt8: function setInt8(byteOffset, value) {
      set(this, 1, byteOffset, packI8, value);
    },
    setUint8: function setUint8(byteOffset, value) {
      set(this, 1, byteOffset, packI8, value);
    },
    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
      set(this, 2, byteOffset, packI16, value, arguments[2]);
    },
    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
      set(this, 2, byteOffset, packI16, value, arguments[2]);
    },
    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
      set(this, 4, byteOffset, packI32, value, arguments[2]);
    },
    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
      set(this, 4, byteOffset, packI32, value, arguments[2]);
    },
    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
      set(this, 4, byteOffset, packF32, value, arguments[2]);
    },
    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
      set(this, 8, byteOffset, packF64, value, arguments[2]);
    }
  });
} else {
  if (!fails(function () {
    $ArrayBuffer(1);
  }) || !fails(function () {
    new $ArrayBuffer(-1); // eslint-disable-line no-new
  }) || fails(function () {
    new $ArrayBuffer(); // eslint-disable-line no-new
    new $ArrayBuffer(1.5); // eslint-disable-line no-new
    new $ArrayBuffer(NaN); // eslint-disable-line no-new
    return $ArrayBuffer.name != ARRAY_BUFFER;
  })) {
    $ArrayBuffer = function ArrayBuffer(length) {
      anInstance(this, $ArrayBuffer);
      return new BaseBuffer(toIndex(length));
    };
    var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
    for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {
      if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
    }
    if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
  }
  // iOS Safari 7.x bug
  var view = new $DataView(new $ArrayBuffer(2));
  var $setInt8 = $DataView[PROTOTYPE].setInt8;
  view.setInt8(0, 2147483648);
  view.setInt8(1, 2147483649);
  if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {
    setInt8: function setInt8(byteOffset, value) {
      $setInt8.call(this, byteOffset, value << 24 >> 24);
    },
    setUint8: function setUint8(byteOffset, value) {
      $setInt8.call(this, byteOffset, value << 24 >> 24);
    }
  }, true);
}
setToStringTag($ArrayBuffer, ARRAY_BUFFER);
setToStringTag($DataView, DATA_VIEW);
hide($DataView[PROTOTYPE], $typed.VIEW, true);
exports[ARRAY_BUFFER] = $ArrayBuffer;
exports[DATA_VIEW] = $DataView;


/***/ }),
/* 232 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/ecma262/#sec-toindex
var toInteger = __webpack_require__(39);
var toLength = __webpack_require__(38);
module.exports = function (it) {
  if (it === undefined) return 0;
  var number = toInteger(it);
  var length = toLength(number);
  if (number !== length) throw RangeError('Wrong length!');
  return length;
};


/***/ }),
/* 233 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
$export($export.G + $export.W + $export.F * !__webpack_require__(230).ABV, {
  DataView: __webpack_require__(231).DataView
});


/***/ }),
/* 234 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Int8', 1, function (init) {
  return function Int8Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 235 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

if (__webpack_require__(6)) {
  var LIBRARY = __webpack_require__(22);
  var global = __webpack_require__(4);
  var fails = __webpack_require__(7);
  var $export = __webpack_require__(8);
  var $typed = __webpack_require__(230);
  var $buffer = __webpack_require__(231);
  var ctx = __webpack_require__(23);
  var anInstance = __webpack_require__(212);
  var propertyDesc = __webpack_require__(17);
  var hide = __webpack_require__(10);
  var redefineAll = __webpack_require__(220);
  var toInteger = __webpack_require__(39);
  var toLength = __webpack_require__(38);
  var toIndex = __webpack_require__(232);
  var toAbsoluteIndex = __webpack_require__(40);
  var toPrimitive = __webpack_require__(16);
  var has = __webpack_require__(5);
  var classof = __webpack_require__(75);
  var isObject = __webpack_require__(13);
  var toObject = __webpack_require__(46);
  var isArrayIter = __webpack_require__(164);
  var create = __webpack_require__(47);
  var getPrototypeOf = __webpack_require__(59);
  var gOPN = __webpack_require__(51).f;
  var getIterFn = __webpack_require__(166);
  var uid = __webpack_require__(19);
  var wks = __webpack_require__(27);
  var createArrayMethod = __webpack_require__(174);
  var createArrayIncludes = __webpack_require__(37);
  var speciesConstructor = __webpack_require__(210);
  var ArrayIterators = __webpack_require__(195);
  var Iterators = __webpack_require__(130);
  var $iterDetect = __webpack_require__(167);
  var setSpecies = __webpack_require__(194);
  var arrayFill = __webpack_require__(190);
  var arrayCopyWithin = __webpack_require__(187);
  var $DP = __webpack_require__(11);
  var $GOPD = __webpack_require__(52);
  var dP = $DP.f;
  var gOPD = $GOPD.f;
  var RangeError = global.RangeError;
  var TypeError = global.TypeError;
  var Uint8Array = global.Uint8Array;
  var ARRAY_BUFFER = 'ArrayBuffer';
  var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
  var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
  var PROTOTYPE = 'prototype';
  var ArrayProto = Array[PROTOTYPE];
  var $ArrayBuffer = $buffer.ArrayBuffer;
  var $DataView = $buffer.DataView;
  var arrayForEach = createArrayMethod(0);
  var arrayFilter = createArrayMethod(2);
  var arraySome = createArrayMethod(3);
  var arrayEvery = createArrayMethod(4);
  var arrayFind = createArrayMethod(5);
  var arrayFindIndex = createArrayMethod(6);
  var arrayIncludes = createArrayIncludes(true);
  var arrayIndexOf = createArrayIncludes(false);
  var arrayValues = ArrayIterators.values;
  var arrayKeys = ArrayIterators.keys;
  var arrayEntries = ArrayIterators.entries;
  var arrayLastIndexOf = ArrayProto.lastIndexOf;
  var arrayReduce = ArrayProto.reduce;
  var arrayReduceRight = ArrayProto.reduceRight;
  var arrayJoin = ArrayProto.join;
  var arraySort = ArrayProto.sort;
  var arraySlice = ArrayProto.slice;
  var arrayToString = ArrayProto.toString;
  var arrayToLocaleString = ArrayProto.toLocaleString;
  var ITERATOR = wks('iterator');
  var TAG = wks('toStringTag');
  var TYPED_CONSTRUCTOR = uid('typed_constructor');
  var DEF_CONSTRUCTOR = uid('def_constructor');
  var ALL_CONSTRUCTORS = $typed.CONSTR;
  var TYPED_ARRAY = $typed.TYPED;
  var VIEW = $typed.VIEW;
  var WRONG_LENGTH = 'Wrong length!';

  var $map = createArrayMethod(1, function (O, length) {
    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
  });

  var LITTLE_ENDIAN = fails(function () {
    // eslint-disable-next-line no-undef
    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
  });

  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
    new Uint8Array(1).set({});
  });

  var toOffset = function (it, BYTES) {
    var offset = toInteger(it);
    if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
    return offset;
  };

  var validate = function (it) {
    if (isObject(it) && TYPED_ARRAY in it) return it;
    throw TypeError(it + ' is not a typed array!');
  };

  var allocate = function (C, length) {
    if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
      throw TypeError('It is not a typed array constructor!');
    } return new C(length);
  };

  var speciesFromList = function (O, list) {
    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
  };

  var fromList = function (C, list) {
    var index = 0;
    var length = list.length;
    var result = allocate(C, length);
    while (length > index) result[index] = list[index++];
    return result;
  };

  var addGetter = function (it, key, internal) {
    dP(it, key, { get: function () { return this._d[internal]; } });
  };

  var $from = function from(source /* , mapfn, thisArg */) {
    var O = toObject(source);
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var iterFn = getIterFn(O);
    var i, length, values, result, step, iterator;
    if (iterFn != undefined && !isArrayIter(iterFn)) {
      for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
        values.push(step.value);
      } O = values;
    }
    if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
    for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
      result[i] = mapping ? mapfn(O[i], i) : O[i];
    }
    return result;
  };

  var $of = function of(/* ...items */) {
    var index = 0;
    var length = arguments.length;
    var result = allocate(this, length);
    while (length > index) result[index] = arguments[index++];
    return result;
  };

  // iOS Safari 6.x fails here
  var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });

  var $toLocaleString = function toLocaleString() {
    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
  };

  var proto = {
    copyWithin: function copyWithin(target, start /* , end */) {
      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
    },
    every: function every(callbackfn /* , thisArg */) {
      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
    },
    fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
      return arrayFill.apply(validate(this), arguments);
    },
    filter: function filter(callbackfn /* , thisArg */) {
      return speciesFromList(this, arrayFilter(validate(this), callbackfn,
        arguments.length > 1 ? arguments[1] : undefined));
    },
    find: function find(predicate /* , thisArg */) {
      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
    },
    findIndex: function findIndex(predicate /* , thisArg */) {
      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
    },
    forEach: function forEach(callbackfn /* , thisArg */) {
      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
    },
    indexOf: function indexOf(searchElement /* , fromIndex */) {
      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
    },
    includes: function includes(searchElement /* , fromIndex */) {
      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
    },
    join: function join(separator) { // eslint-disable-line no-unused-vars
      return arrayJoin.apply(validate(this), arguments);
    },
    lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
      return arrayLastIndexOf.apply(validate(this), arguments);
    },
    map: function map(mapfn /* , thisArg */) {
      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
    },
    reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
      return arrayReduce.apply(validate(this), arguments);
    },
    reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
      return arrayReduceRight.apply(validate(this), arguments);
    },
    reverse: function reverse() {
      var that = this;
      var length = validate(that).length;
      var middle = Math.floor(length / 2);
      var index = 0;
      var value;
      while (index < middle) {
        value = that[index];
        that[index++] = that[--length];
        that[length] = value;
      } return that;
    },
    some: function some(callbackfn /* , thisArg */) {
      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
    },
    sort: function sort(comparefn) {
      return arraySort.call(validate(this), comparefn);
    },
    subarray: function subarray(begin, end) {
      var O = validate(this);
      var length = O.length;
      var $begin = toAbsoluteIndex(begin, length);
      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
        O.buffer,
        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
        toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
      );
    }
  };

  var $slice = function slice(start, end) {
    return speciesFromList(this, arraySlice.call(validate(this), start, end));
  };

  var $set = function set(arrayLike /* , offset */) {
    validate(this);
    var offset = toOffset(arguments[1], 1);
    var length = this.length;
    var src = toObject(arrayLike);
    var len = toLength(src.length);
    var index = 0;
    if (len + offset > length) throw RangeError(WRONG_LENGTH);
    while (index < len) this[offset + index] = src[index++];
  };

  var $iterators = {
    entries: function entries() {
      return arrayEntries.call(validate(this));
    },
    keys: function keys() {
      return arrayKeys.call(validate(this));
    },
    values: function values() {
      return arrayValues.call(validate(this));
    }
  };

  var isTAIndex = function (target, key) {
    return isObject(target)
      && target[TYPED_ARRAY]
      && typeof key != 'symbol'
      && key in target
      && String(+key) == String(key);
  };
  var $getDesc = function getOwnPropertyDescriptor(target, key) {
    return isTAIndex(target, key = toPrimitive(key, true))
      ? propertyDesc(2, target[key])
      : gOPD(target, key);
  };
  var $setDesc = function defineProperty(target, key, desc) {
    if (isTAIndex(target, key = toPrimitive(key, true))
      && isObject(desc)
      && has(desc, 'value')
      && !has(desc, 'get')
      && !has(desc, 'set')
      // TODO: add validation descriptor w/o calling accessors
      && !desc.configurable
      && (!has(desc, 'writable') || desc.writable)
      && (!has(desc, 'enumerable') || desc.enumerable)
    ) {
      target[key] = desc.value;
      return target;
    } return dP(target, key, desc);
  };

  if (!ALL_CONSTRUCTORS) {
    $GOPD.f = $getDesc;
    $DP.f = $setDesc;
  }

  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
    getOwnPropertyDescriptor: $getDesc,
    defineProperty: $setDesc
  });

  if (fails(function () { arrayToString.call({}); })) {
    arrayToString = arrayToLocaleString = function toString() {
      return arrayJoin.call(this);
    };
  }

  var $TypedArrayPrototype$ = redefineAll({}, proto);
  redefineAll($TypedArrayPrototype$, $iterators);
  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
  redefineAll($TypedArrayPrototype$, {
    slice: $slice,
    set: $set,
    constructor: function () { /* noop */ },
    toString: arrayToString,
    toLocaleString: $toLocaleString
  });
  addGetter($TypedArrayPrototype$, 'buffer', 'b');
  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
  addGetter($TypedArrayPrototype$, 'byteLength', 'l');
  addGetter($TypedArrayPrototype$, 'length', 'e');
  dP($TypedArrayPrototype$, TAG, {
    get: function () { return this[TYPED_ARRAY]; }
  });

  // eslint-disable-next-line max-statements
  module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
    CLAMPED = !!CLAMPED;
    var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
    var GETTER = 'get' + KEY;
    var SETTER = 'set' + KEY;
    var TypedArray = global[NAME];
    var Base = TypedArray || {};
    var TAC = TypedArray && getPrototypeOf(TypedArray);
    var FORCED = !TypedArray || !$typed.ABV;
    var O = {};
    var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
    var getter = function (that, index) {
      var data = that._d;
      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
    };
    var setter = function (that, index, value) {
      var data = that._d;
      if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
    };
    var addElement = function (that, index) {
      dP(that, index, {
        get: function () {
          return getter(this, index);
        },
        set: function (value) {
          return setter(this, index, value);
        },
        enumerable: true
      });
    };
    if (FORCED) {
      TypedArray = wrapper(function (that, data, $offset, $length) {
        anInstance(that, TypedArray, NAME, '_d');
        var index = 0;
        var offset = 0;
        var buffer, byteLength, length, klass;
        if (!isObject(data)) {
          length = toIndex(data);
          byteLength = length * BYTES;
          buffer = new $ArrayBuffer(byteLength);
        } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
          buffer = data;
          offset = toOffset($offset, BYTES);
          var $len = data.byteLength;
          if ($length === undefined) {
            if ($len % BYTES) throw RangeError(WRONG_LENGTH);
            byteLength = $len - offset;
            if (byteLength < 0) throw RangeError(WRONG_LENGTH);
          } else {
            byteLength = toLength($length) * BYTES;
            if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
          }
          length = byteLength / BYTES;
        } else if (TYPED_ARRAY in data) {
          return fromList(TypedArray, data);
        } else {
          return $from.call(TypedArray, data);
        }
        hide(that, '_d', {
          b: buffer,
          o: offset,
          l: byteLength,
          e: length,
          v: new $DataView(buffer)
        });
        while (index < length) addElement(that, index++);
      });
      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
      hide(TypedArrayPrototype, 'constructor', TypedArray);
    } else if (!fails(function () {
      TypedArray(1);
    }) || !fails(function () {
      new TypedArray(-1); // eslint-disable-line no-new
    }) || !$iterDetect(function (iter) {
      new TypedArray(); // eslint-disable-line no-new
      new TypedArray(null); // eslint-disable-line no-new
      new TypedArray(1.5); // eslint-disable-line no-new
      new TypedArray(iter); // eslint-disable-line no-new
    }, true)) {
      TypedArray = wrapper(function (that, data, $offset, $length) {
        anInstance(that, TypedArray, NAME);
        var klass;
        // `ws` module bug, temporarily remove validation length for Uint8Array
        // https://github.com/websockets/ws/pull/645
        if (!isObject(data)) return new Base(toIndex(data));
        if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
          return $length !== undefined
            ? new Base(data, toOffset($offset, BYTES), $length)
            : $offset !== undefined
              ? new Base(data, toOffset($offset, BYTES))
              : new Base(data);
        }
        if (TYPED_ARRAY in data) return fromList(TypedArray, data);
        return $from.call(TypedArray, data);
      });
      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
        if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
      });
      TypedArray[PROTOTYPE] = TypedArrayPrototype;
      if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
    }
    var $nativeIterator = TypedArrayPrototype[ITERATOR];
    var CORRECT_ITER_NAME = !!$nativeIterator
      && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
    var $iterator = $iterators.values;
    hide(TypedArray, TYPED_CONSTRUCTOR, true);
    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
    hide(TypedArrayPrototype, VIEW, true);
    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);

    if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
      dP(TypedArrayPrototype, TAG, {
        get: function () { return NAME; }
      });
    }

    O[NAME] = TypedArray;

    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);

    $export($export.S, NAME, {
      BYTES_PER_ELEMENT: BYTES
    });

    $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
      from: $from,
      of: $of
    });

    if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);

    $export($export.P, NAME, proto);

    setSpecies(NAME);

    $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });

    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);

    if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;

    $export($export.P + $export.F * fails(function () {
      new TypedArray(1).slice();
    }), NAME, { slice: $slice });

    $export($export.P + $export.F * (fails(function () {
      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
    }) || !fails(function () {
      TypedArrayPrototype.toLocaleString.call([1, 2]);
    })), NAME, { toLocaleString: $toLocaleString });

    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
    if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
  };
} else module.exports = function () { /* empty */ };


/***/ }),
/* 236 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Uint8', 1, function (init) {
  return function Uint8Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 237 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Uint8', 1, function (init) {
  return function Uint8ClampedArray(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
}, true);


/***/ }),
/* 238 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Int16', 2, function (init) {
  return function Int16Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 239 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Uint16', 2, function (init) {
  return function Uint16Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 240 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Int32', 4, function (init) {
  return function Int32Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 241 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Uint32', 4, function (init) {
  return function Uint32Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 242 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Float32', 4, function (init) {
  return function Float32Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 243 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(235)('Float64', 8, function (init) {
  return function Float64Array(data, byteOffset, length) {
    return init(this, data, byteOffset, length);
  };
});


/***/ }),
/* 244 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
var $export = __webpack_require__(8);
var aFunction = __webpack_require__(24);
var anObject = __webpack_require__(12);
var rApply = (__webpack_require__(4).Reflect || {}).apply;
var fApply = Function.apply;
// MS Edge argumentsList argument is optional
$export($export.S + $export.F * !__webpack_require__(7)(function () {
  rApply(function () { /* empty */ });
}), 'Reflect', {
  apply: function apply(target, thisArgument, argumentsList) {
    var T = aFunction(target);
    var L = anObject(argumentsList);
    return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
  }
});


/***/ }),
/* 245 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(8);
var create = __webpack_require__(47);
var aFunction = __webpack_require__(24);
var anObject = __webpack_require__(12);
var isObject = __webpack_require__(13);
var fails = __webpack_require__(7);
var bind = __webpack_require__(77);
var rConstruct = (__webpack_require__(4).Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),
/* 246 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
var dP = __webpack_require__(11);
var $export = __webpack_require__(8);
var anObject = __webpack_require__(12);
var toPrimitive = __webpack_require__(16);

// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
$export($export.S + $export.F * __webpack_require__(7)(function () {
  // eslint-disable-next-line no-undef
  Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });
}), 'Reflect', {
  defineProperty: function defineProperty(target, propertyKey, attributes) {
    anObject(target);
    propertyKey = toPrimitive(propertyKey, true);
    anObject(attributes);
    try {
      dP.f(target, propertyKey, attributes);
      return true;
    } catch (e) {
      return false;
    }
  }
});


/***/ }),
/* 247 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.4 Reflect.deleteProperty(target, propertyKey)
var $export = __webpack_require__(8);
var gOPD = __webpack_require__(52).f;
var anObject = __webpack_require__(12);

$export($export.S, 'Reflect', {
  deleteProperty: function deleteProperty(target, propertyKey) {
    var desc = gOPD(anObject(target), propertyKey);
    return desc && !desc.configurable ? false : delete target[propertyKey];
  }
});


/***/ }),
/* 248 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 26.1.5 Reflect.enumerate(target)
var $export = __webpack_require__(8);
var anObject = __webpack_require__(12);
var Enumerate = function (iterated) {
  this._t = anObject(iterated); // target
  this._i = 0;                  // next index
  var keys = this._k = [];      // keys
  var key;
  for (key in iterated) keys.push(key);
};
__webpack_require__(131)(Enumerate, 'Object', function () {
  var that = this;
  var keys = that._k;
  var key;
  do {
    if (that._i >= keys.length) return { value: undefined, done: true };
  } while (!((key = keys[that._i++]) in that._t));
  return { value: key, done: false };
});

$export($export.S, 'Reflect', {
  enumerate: function enumerate(target) {
    return new Enumerate(target);
  }
});


/***/ }),
/* 249 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.6 Reflect.get(target, propertyKey [, receiver])
var gOPD = __webpack_require__(52);
var getPrototypeOf = __webpack_require__(59);
var has = __webpack_require__(5);
var $export = __webpack_require__(8);
var isObject = __webpack_require__(13);
var anObject = __webpack_require__(12);

function get(target, propertyKey /* , receiver */) {
  var receiver = arguments.length < 3 ? target : arguments[2];
  var desc, proto;
  if (anObject(target) === receiver) return target[propertyKey];
  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
    ? desc.value
    : desc.get !== undefined
      ? desc.get.call(receiver)
      : undefined;
  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
}

$export($export.S, 'Reflect', { get: get });


/***/ }),
/* 250 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
var gOPD = __webpack_require__(52);
var $export = __webpack_require__(8);
var anObject = __webpack_require__(12);

$export($export.S, 'Reflect', {
  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
    return gOPD.f(anObject(target), propertyKey);
  }
});


/***/ }),
/* 251 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.8 Reflect.getPrototypeOf(target)
var $export = __webpack_require__(8);
var getProto = __webpack_require__(59);
var anObject = __webpack_require__(12);

$export($export.S, 'Reflect', {
  getPrototypeOf: function getPrototypeOf(target) {
    return getProto(anObject(target));
  }
});


/***/ }),
/* 252 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.9 Reflect.has(target, propertyKey)
var $export = __webpack_require__(8);

$export($export.S, 'Reflect', {
  has: function has(target, propertyKey) {
    return propertyKey in target;
  }
});


/***/ }),
/* 253 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.10 Reflect.isExtensible(target)
var $export = __webpack_require__(8);
var anObject = __webpack_require__(12);
var $isExtensible = Object.isExtensible;

$export($export.S, 'Reflect', {
  isExtensible: function isExtensible(target) {
    anObject(target);
    return $isExtensible ? $isExtensible(target) : true;
  }
});


/***/ }),
/* 254 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.11 Reflect.ownKeys(target)
var $export = __webpack_require__(8);

$export($export.S, 'Reflect', { ownKeys: __webpack_require__(255) });


/***/ }),
/* 255 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(51);
var gOPS = __webpack_require__(43);
var anObject = __webpack_require__(12);
var Reflect = __webpack_require__(4).Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),
/* 256 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.12 Reflect.preventExtensions(target)
var $export = __webpack_require__(8);
var anObject = __webpack_require__(12);
var $preventExtensions = Object.preventExtensions;

$export($export.S, 'Reflect', {
  preventExtensions: function preventExtensions(target) {
    anObject(target);
    try {
      if ($preventExtensions) $preventExtensions(target);
      return true;
    } catch (e) {
      return false;
    }
  }
});


/***/ }),
/* 257 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
var dP = __webpack_require__(11);
var gOPD = __webpack_require__(52);
var getPrototypeOf = __webpack_require__(59);
var has = __webpack_require__(5);
var $export = __webpack_require__(8);
var createDesc = __webpack_require__(17);
var anObject = __webpack_require__(12);
var isObject = __webpack_require__(13);

function set(target, propertyKey, V /* , receiver */) {
  var receiver = arguments.length < 4 ? target : arguments[3];
  var ownDesc = gOPD.f(anObject(target), propertyKey);
  var existingDescriptor, proto;
  if (!ownDesc) {
    if (isObject(proto = getPrototypeOf(target))) {
      return set(proto, propertyKey, V, receiver);
    }
    ownDesc = createDesc(0);
  }
  if (has(ownDesc, 'value')) {
    if (ownDesc.writable === false || !isObject(receiver)) return false;
    if (existingDescriptor = gOPD.f(receiver, propertyKey)) {
      if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
      existingDescriptor.value = V;
      dP.f(receiver, propertyKey, existingDescriptor);
    } else dP.f(receiver, propertyKey, createDesc(0, V));
    return true;
  }
  return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
}

$export($export.S, 'Reflect', { set: set });


/***/ }),
/* 258 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.14 Reflect.setPrototypeOf(target, proto)
var $export = __webpack_require__(8);
var setProto = __webpack_require__(73);

if (setProto) $export($export.S, 'Reflect', {
  setPrototypeOf: function setPrototypeOf(target, proto) {
    setProto.check(target, proto);
    try {
      setProto.set(target, proto);
      return true;
    } catch (e) {
      return false;
    }
  }
});


/***/ }),
/* 259 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(8);
var $includes = __webpack_require__(37)(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(188)('includes');


/***/ }),
/* 260 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap
var $export = __webpack_require__(8);
var flattenIntoArray = __webpack_require__(261);
var toObject = __webpack_require__(46);
var toLength = __webpack_require__(38);
var aFunction = __webpack_require__(24);
var arraySpeciesCreate = __webpack_require__(175);

$export($export.P, 'Array', {
  flatMap: function flatMap(callbackfn /* , thisArg */) {
    var O = toObject(this);
    var sourceLen, A;
    aFunction(callbackfn);
    sourceLen = toLength(O.length);
    A = arraySpeciesCreate(O, 0);
    flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);
    return A;
  }
});

__webpack_require__(188)('flatMap');


/***/ }),
/* 261 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
var isArray = __webpack_require__(45);
var isObject = __webpack_require__(13);
var toLength = __webpack_require__(38);
var ctx = __webpack_require__(23);
var IS_CONCAT_SPREADABLE = __webpack_require__(27)('isConcatSpreadable');

function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {
  var targetIndex = start;
  var sourceIndex = 0;
  var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;
  var element, spreadable;

  while (sourceIndex < sourceLen) {
    if (sourceIndex in source) {
      element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];

      spreadable = false;
      if (isObject(element)) {
        spreadable = element[IS_CONCAT_SPREADABLE];
        spreadable = spreadable !== undefined ? !!spreadable : isArray(element);
      }

      if (spreadable && depth > 0) {
        targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
      } else {
        if (targetIndex >= 0x1fffffffffffff) throw TypeError();
        target[targetIndex] = element;
      }

      targetIndex++;
    }
    sourceIndex++;
  }
  return targetIndex;
}

module.exports = flattenIntoArray;


/***/ }),
/* 262 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten
var $export = __webpack_require__(8);
var flattenIntoArray = __webpack_require__(261);
var toObject = __webpack_require__(46);
var toLength = __webpack_require__(38);
var toInteger = __webpack_require__(39);
var arraySpeciesCreate = __webpack_require__(175);

$export($export.P, 'Array', {
  flatten: function flatten(/* depthArg = 1 */) {
    var depthArg = arguments[0];
    var O = toObject(this);
    var sourceLen = toLength(O.length);
    var A = arraySpeciesCreate(O, 0);
    flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));
    return A;
  }
});

__webpack_require__(188)('flatten');


/***/ }),
/* 263 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/mathiasbynens/String.prototype.at
var $export = __webpack_require__(8);
var $at = __webpack_require__(128)(true);
var $fails = __webpack_require__(7);

var FORCED = $fails(function () {
  return '𠮷'.at(0) !== '𠮷';
});

$export($export.P + $export.F * FORCED, 'String', {
  at: function at(pos) {
    return $at(this, pos);
  }
});


/***/ }),
/* 264 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-string-pad-start-end
var $export = __webpack_require__(8);
var $pad = __webpack_require__(265);
var userAgent = __webpack_require__(218);

// https://github.com/zloirock/core-js/issues/280
var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);

$export($export.P + $export.F * WEBKIT_BUG, 'String', {
  padStart: function padStart(maxLength /* , fillString = ' ' */) {
    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
  }
});


/***/ }),
/* 265 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-string-pad-start-end
var toLength = __webpack_require__(38);
var repeat = __webpack_require__(91);
var defined = __webpack_require__(36);

module.exports = function (that, maxLength, fillString, left) {
  var S = String(defined(that));
  var stringLength = S.length;
  var fillStr = fillString === undefined ? ' ' : String(fillString);
  var intMaxLength = toLength(maxLength);
  if (intMaxLength <= stringLength || fillStr == '') return S;
  var fillLen = intMaxLength - stringLength;
  var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
  if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);
  return left ? stringFiller + S : S + stringFiller;
};


/***/ }),
/* 266 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-string-pad-start-end
var $export = __webpack_require__(8);
var $pad = __webpack_require__(265);
var userAgent = __webpack_require__(218);

// https://github.com/zloirock/core-js/issues/280
var WEBKIT_BUG = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);

$export($export.P + $export.F * WEBKIT_BUG, 'String', {
  padEnd: function padEnd(maxLength /* , fillString = ' ' */) {
    return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
  }
});


/***/ }),
/* 267 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
__webpack_require__(83)('trimLeft', function ($trim) {
  return function trimLeft() {
    return $trim(this, 1);
  };
}, 'trimStart');


/***/ }),
/* 268 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
__webpack_require__(83)('trimRight', function ($trim) {
  return function trimRight() {
    return $trim(this, 2);
  };
}, 'trimEnd');


/***/ }),
/* 269 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/String.prototype.matchAll/
var $export = __webpack_require__(8);
var defined = __webpack_require__(36);
var toLength = __webpack_require__(38);
var isRegExp = __webpack_require__(135);
var getFlags = __webpack_require__(198);
var RegExpProto = RegExp.prototype;

var $RegExpStringIterator = function (regexp, string) {
  this._r = regexp;
  this._s = string;
};

__webpack_require__(131)($RegExpStringIterator, 'RegExp String', function next() {
  var match = this._r.exec(this._s);
  return { value: match, done: match === null };
});

$export($export.P, 'String', {
  matchAll: function matchAll(regexp) {
    defined(this);
    if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');
    var S = String(this);
    var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);
    var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
    rx.lastIndex = toLength(regexp.lastIndex);
    return new $RegExpStringIterator(rx, S);
  }
});


/***/ }),
/* 270 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(29)('asyncIterator');


/***/ }),
/* 271 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(29)('observable');


/***/ }),
/* 272 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(8);
var ownKeys = __webpack_require__(255);
var toIObject = __webpack_require__(33);
var gOPD = __webpack_require__(52);
var createProperty = __webpack_require__(165);

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),
/* 273 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(8);
var $values = __webpack_require__(274)(false);

$export($export.S, 'Object', {
  values: function values(it) {
    return $values(it);
  }
});


/***/ }),
/* 274 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DESCRIPTORS = __webpack_require__(6);
var getKeys = __webpack_require__(31);
var toIObject = __webpack_require__(33);
var isEnum = __webpack_require__(44).f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),
/* 275 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(8);
var $entries = __webpack_require__(274)(true);

$export($export.S, 'Object', {
  entries: function entries(it) {
    return $entries(it);
  }
});


/***/ }),
/* 276 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toObject = __webpack_require__(46);
var aFunction = __webpack_require__(24);
var $defineProperty = __webpack_require__(11);

// B.2.2.2 Object.prototype.__defineGetter__(P, getter)
__webpack_require__(6) && $export($export.P + __webpack_require__(277), 'Object', {
  __defineGetter__: function __defineGetter__(P, getter) {
    $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });
  }
});


/***/ }),
/* 277 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// Forced replacement prototype accessors methods
module.exports = __webpack_require__(22) || !__webpack_require__(7)(function () {
  var K = Math.random();
  // In FF throws only define methods
  // eslint-disable-next-line no-undef, no-useless-call
  __defineSetter__.call(null, K, function () { /* empty */ });
  delete __webpack_require__(4)[K];
});


/***/ }),
/* 278 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toObject = __webpack_require__(46);
var aFunction = __webpack_require__(24);
var $defineProperty = __webpack_require__(11);

// B.2.2.3 Object.prototype.__defineSetter__(P, setter)
__webpack_require__(6) && $export($export.P + __webpack_require__(277), 'Object', {
  __defineSetter__: function __defineSetter__(P, setter) {
    $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });
  }
});


/***/ }),
/* 279 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toObject = __webpack_require__(46);
var toPrimitive = __webpack_require__(16);
var getPrototypeOf = __webpack_require__(59);
var getOwnPropertyDescriptor = __webpack_require__(52).f;

// B.2.2.4 Object.prototype.__lookupGetter__(P)
__webpack_require__(6) && $export($export.P + __webpack_require__(277), 'Object', {
  __lookupGetter__: function __lookupGetter__(P) {
    var O = toObject(this);
    var K = toPrimitive(P, true);
    var D;
    do {
      if (D = getOwnPropertyDescriptor(O, K)) return D.get;
    } while (O = getPrototypeOf(O));
  }
});


/***/ }),
/* 280 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(8);
var toObject = __webpack_require__(46);
var toPrimitive = __webpack_require__(16);
var getPrototypeOf = __webpack_require__(59);
var getOwnPropertyDescriptor = __webpack_require__(52).f;

// B.2.2.5 Object.prototype.__lookupSetter__(P)
__webpack_require__(6) && $export($export.P + __webpack_require__(277), 'Object', {
  __lookupSetter__: function __lookupSetter__(P) {
    var O = toObject(this);
    var K = toPrimitive(P, true);
    var D;
    do {
      if (D = getOwnPropertyDescriptor(O, K)) return D.set;
    } while (O = getPrototypeOf(O));
  }
});


/***/ }),
/* 281 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/DavidBruant/Map-Set.prototype.toJSON
var $export = __webpack_require__(8);

$export($export.P + $export.R, 'Map', { toJSON: __webpack_require__(282)('Map') });


/***/ }),
/* 282 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/DavidBruant/Map-Set.prototype.toJSON
var classof = __webpack_require__(75);
var from = __webpack_require__(283);
module.exports = function (NAME) {
  return function toJSON() {
    if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic");
    return from(this);
  };
};


/***/ }),
/* 283 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var forOf = __webpack_require__(213);

module.exports = function (iter, ITERATOR) {
  var result = [];
  forOf(iter, false, result.push, result, ITERATOR);
  return result;
};


/***/ }),
/* 284 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/DavidBruant/Map-Set.prototype.toJSON
var $export = __webpack_require__(8);

$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(282)('Set') });


/***/ }),
/* 285 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of
__webpack_require__(286)('Map');


/***/ }),
/* 286 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(8);

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { of: function of() {
    var length = arguments.length;
    var A = new Array(length);
    while (length--) A[length] = arguments[length];
    return new this(A);
  } });
};


/***/ }),
/* 287 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of
__webpack_require__(286)('Set');


/***/ }),
/* 288 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
__webpack_require__(286)('WeakMap');


/***/ }),
/* 289 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
__webpack_require__(286)('WeakSet');


/***/ }),
/* 290 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from
__webpack_require__(291)('Map');


/***/ }),
/* 291 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(8);
var aFunction = __webpack_require__(24);
var ctx = __webpack_require__(23);
var forOf = __webpack_require__(213);

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
    var mapFn = arguments[1];
    var mapping, A, n, cb;
    aFunction(this);
    mapping = mapFn !== undefined;
    if (mapping) aFunction(mapFn);
    if (source == undefined) return new this();
    A = [];
    if (mapping) {
      n = 0;
      cb = ctx(mapFn, arguments[2], 2);
      forOf(source, false, function (nextItem) {
        A.push(cb(nextItem, n++));
      });
    } else {
      forOf(source, false, A.push, A);
    }
    return new this(A);
  } });
};


/***/ }),
/* 292 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from
__webpack_require__(291)('Set');


/***/ }),
/* 293 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
__webpack_require__(291)('WeakMap');


/***/ }),
/* 294 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
__webpack_require__(291)('WeakSet');


/***/ }),
/* 295 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-global
var $export = __webpack_require__(8);

$export($export.G, { global: __webpack_require__(4) });


/***/ }),
/* 296 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-global
var $export = __webpack_require__(8);

$export($export.S, 'System', { global: __webpack_require__(4) });


/***/ }),
/* 297 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/ljharb/proposal-is-error
var $export = __webpack_require__(8);
var cof = __webpack_require__(35);

$export($export.S, 'Error', {
  isError: function isError(it) {
    return cof(it) === 'Error';
  }
});


/***/ }),
/* 298 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  clamp: function clamp(x, lower, upper) {
    return Math.min(upper, Math.max(lower, x));
  }
});


/***/ }),
/* 299 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);

$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });


/***/ }),
/* 300 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);
var RAD_PER_DEG = 180 / Math.PI;

$export($export.S, 'Math', {
  degrees: function degrees(radians) {
    return radians * RAD_PER_DEG;
  }
});


/***/ }),
/* 301 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);
var scale = __webpack_require__(302);
var fround = __webpack_require__(114);

$export($export.S, 'Math', {
  fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {
    return fround(scale(x, inLow, inHigh, outLow, outHigh));
  }
});


/***/ }),
/* 302 */
/***/ ((module) => {

// https://rwaldron.github.io/proposal-math-extensions/
module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
  if (
    arguments.length === 0
      // eslint-disable-next-line no-self-compare
      || x != x
      // eslint-disable-next-line no-self-compare
      || inLow != inLow
      // eslint-disable-next-line no-self-compare
      || inHigh != inHigh
      // eslint-disable-next-line no-self-compare
      || outLow != outLow
      // eslint-disable-next-line no-self-compare
      || outHigh != outHigh
  ) return NaN;
  if (x === Infinity || x === -Infinity) return x;
  return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
};


/***/ }),
/* 303 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  iaddh: function iaddh(x0, x1, y0, y1) {
    var $x0 = x0 >>> 0;
    var $x1 = x1 >>> 0;
    var $y0 = y0 >>> 0;
    return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
  }
});


/***/ }),
/* 304 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  isubh: function isubh(x0, x1, y0, y1) {
    var $x0 = x0 >>> 0;
    var $x1 = x1 >>> 0;
    var $y0 = y0 >>> 0;
    return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
  }
});


/***/ }),
/* 305 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  imulh: function imulh(u, v) {
    var UINT16 = 0xffff;
    var $u = +u;
    var $v = +v;
    var u0 = $u & UINT16;
    var v0 = $v & UINT16;
    var u1 = $u >> 16;
    var v1 = $v >> 16;
    var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
    return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
  }
});


/***/ }),
/* 306 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);

$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });


/***/ }),
/* 307 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);
var DEG_PER_RAD = Math.PI / 180;

$export($export.S, 'Math', {
  radians: function radians(degrees) {
    return degrees * DEG_PER_RAD;
  }
});


/***/ }),
/* 308 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://rwaldron.github.io/proposal-math-extensions/
var $export = __webpack_require__(8);

$export($export.S, 'Math', { scale: __webpack_require__(302) });


/***/ }),
/* 309 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
var $export = __webpack_require__(8);

$export($export.S, 'Math', {
  umulh: function umulh(u, v) {
    var UINT16 = 0xffff;
    var $u = +u;
    var $v = +v;
    var u0 = $u & UINT16;
    var v0 = $v & UINT16;
    var u1 = $u >>> 16;
    var v1 = $v >>> 16;
    var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
    return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
  }
});


/***/ }),
/* 310 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// http://jfbastien.github.io/papers/Math.signbit.html
var $export = __webpack_require__(8);

$export($export.S, 'Math', { signbit: function signbit(x) {
  // eslint-disable-next-line no-self-compare
  return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;
} });


/***/ }),
/* 311 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(8);
var core = __webpack_require__(9);
var global = __webpack_require__(4);
var speciesConstructor = __webpack_require__(210);
var promiseResolve = __webpack_require__(219);

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),
/* 312 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(8);
var newPromiseCapability = __webpack_require__(216);
var perform = __webpack_require__(217);

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),
/* 313 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var toMetaKey = metadata.key;
var ordinaryDefineOwnMetadata = metadata.set;

metadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {
  ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
} });


/***/ }),
/* 314 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var Map = __webpack_require__(221);
var $export = __webpack_require__(8);
var shared = __webpack_require__(21)('metadata');
var store = shared.store || (shared.store = new (__webpack_require__(226))());

var getOrCreateMetadataMap = function (target, targetKey, create) {
  var targetMetadata = store.get(target);
  if (!targetMetadata) {
    if (!create) return undefined;
    store.set(target, targetMetadata = new Map());
  }
  var keyMetadata = targetMetadata.get(targetKey);
  if (!keyMetadata) {
    if (!create) return undefined;
    targetMetadata.set(targetKey, keyMetadata = new Map());
  } return keyMetadata;
};
var ordinaryHasOwnMetadata = function (MetadataKey, O, P) {
  var metadataMap = getOrCreateMetadataMap(O, P, false);
  return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
};
var ordinaryGetOwnMetadata = function (MetadataKey, O, P) {
  var metadataMap = getOrCreateMetadataMap(O, P, false);
  return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
};
var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {
  getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
};
var ordinaryOwnMetadataKeys = function (target, targetKey) {
  var metadataMap = getOrCreateMetadataMap(target, targetKey, false);
  var keys = [];
  if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });
  return keys;
};
var toMetaKey = function (it) {
  return it === undefined || typeof it == 'symbol' ? it : String(it);
};
var exp = function (O) {
  $export($export.S, 'Reflect', O);
};

module.exports = {
  store: store,
  map: getOrCreateMetadataMap,
  has: ordinaryHasOwnMetadata,
  get: ordinaryGetOwnMetadata,
  set: ordinaryDefineOwnMetadata,
  keys: ordinaryOwnMetadataKeys,
  key: toMetaKey,
  exp: exp
};


/***/ }),
/* 315 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var toMetaKey = metadata.key;
var getOrCreateMetadataMap = metadata.map;
var store = metadata.store;

metadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {
  var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);
  var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
  if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;
  if (metadataMap.size) return true;
  var targetMetadata = store.get(target);
  targetMetadata['delete'](targetKey);
  return !!targetMetadata.size || store['delete'](target);
} });


/***/ }),
/* 316 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var getPrototypeOf = __webpack_require__(59);
var ordinaryHasOwnMetadata = metadata.has;
var ordinaryGetOwnMetadata = metadata.get;
var toMetaKey = metadata.key;

var ordinaryGetMetadata = function (MetadataKey, O, P) {
  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
  if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);
  var parent = getPrototypeOf(O);
  return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
};

metadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {
  return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
} });


/***/ }),
/* 317 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var Set = __webpack_require__(225);
var from = __webpack_require__(283);
var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var getPrototypeOf = __webpack_require__(59);
var ordinaryOwnMetadataKeys = metadata.keys;
var toMetaKey = metadata.key;

var ordinaryMetadataKeys = function (O, P) {
  var oKeys = ordinaryOwnMetadataKeys(O, P);
  var parent = getPrototypeOf(O);
  if (parent === null) return oKeys;
  var pKeys = ordinaryMetadataKeys(parent, P);
  return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
};

metadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {
  return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
} });


/***/ }),
/* 318 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var ordinaryGetOwnMetadata = metadata.get;
var toMetaKey = metadata.key;

metadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {
  return ordinaryGetOwnMetadata(metadataKey, anObject(target)
    , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
} });


/***/ }),
/* 319 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var ordinaryOwnMetadataKeys = metadata.keys;
var toMetaKey = metadata.key;

metadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {
  return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
} });


/***/ }),
/* 320 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var getPrototypeOf = __webpack_require__(59);
var ordinaryHasOwnMetadata = metadata.has;
var toMetaKey = metadata.key;

var ordinaryHasMetadata = function (MetadataKey, O, P) {
  var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
  if (hasOwn) return true;
  var parent = getPrototypeOf(O);
  return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
};

metadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {
  return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
} });


/***/ }),
/* 321 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var ordinaryHasOwnMetadata = metadata.has;
var toMetaKey = metadata.key;

metadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {
  return ordinaryHasOwnMetadata(metadataKey, anObject(target)
    , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
} });


/***/ }),
/* 322 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $metadata = __webpack_require__(314);
var anObject = __webpack_require__(12);
var aFunction = __webpack_require__(24);
var toMetaKey = $metadata.key;
var ordinaryDefineOwnMetadata = $metadata.set;

$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {
  return function decorator(target, targetKey) {
    ordinaryDefineOwnMetadata(
      metadataKey, metadataValue,
      (targetKey !== undefined ? anObject : aFunction)(target),
      toMetaKey(targetKey)
    );
  };
} });


/***/ }),
/* 323 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask
var $export = __webpack_require__(8);
var microtask = __webpack_require__(215)();
var process = __webpack_require__(4).process;
var isNode = __webpack_require__(35)(process) == 'process';

$export($export.G, {
  asap: function asap(fn) {
    var domain = isNode && process.domain;
    microtask(domain ? domain.bind(fn) : fn);
  }
});


/***/ }),
/* 324 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/zenparsing/es-observable
var $export = __webpack_require__(8);
var global = __webpack_require__(4);
var core = __webpack_require__(9);
var microtask = __webpack_require__(215)();
var OBSERVABLE = __webpack_require__(27)('observable');
var aFunction = __webpack_require__(24);
var anObject = __webpack_require__(12);
var anInstance = __webpack_require__(212);
var redefineAll = __webpack_require__(220);
var hide = __webpack_require__(10);
var forOf = __webpack_require__(213);
var RETURN = forOf.RETURN;

var getMethod = function (fn) {
  return fn == null ? undefined : aFunction(fn);
};

var cleanupSubscription = function (subscription) {
  var cleanup = subscription._c;
  if (cleanup) {
    subscription._c = undefined;
    cleanup();
  }
};

var subscriptionClosed = function (subscription) {
  return subscription._o === undefined;
};

var closeSubscription = function (subscription) {
  if (!subscriptionClosed(subscription)) {
    subscription._o = undefined;
    cleanupSubscription(subscription);
  }
};

var Subscription = function (observer, subscriber) {
  anObject(observer);
  this._c = undefined;
  this._o = observer;
  observer = new SubscriptionObserver(this);
  try {
    var cleanup = subscriber(observer);
    var subscription = cleanup;
    if (cleanup != null) {
      if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };
      else aFunction(cleanup);
      this._c = cleanup;
    }
  } catch (e) {
    observer.error(e);
    return;
  } if (subscriptionClosed(this)) cleanupSubscription(this);
};

Subscription.prototype = redefineAll({}, {
  unsubscribe: function unsubscribe() { closeSubscription(this); }
});

var SubscriptionObserver = function (subscription) {
  this._s = subscription;
};

SubscriptionObserver.prototype = redefineAll({}, {
  next: function next(value) {
    var subscription = this._s;
    if (!subscriptionClosed(subscription)) {
      var observer = subscription._o;
      try {
        var m = getMethod(observer.next);
        if (m) return m.call(observer, value);
      } catch (e) {
        try {
          closeSubscription(subscription);
        } finally {
          throw e;
        }
      }
    }
  },
  error: function error(value) {
    var subscription = this._s;
    if (subscriptionClosed(subscription)) throw value;
    var observer = subscription._o;
    subscription._o = undefined;
    try {
      var m = getMethod(observer.error);
      if (!m) throw value;
      value = m.call(observer, value);
    } catch (e) {
      try {
        cleanupSubscription(subscription);
      } finally {
        throw e;
      }
    } cleanupSubscription(subscription);
    return value;
  },
  complete: function complete(value) {
    var subscription = this._s;
    if (!subscriptionClosed(subscription)) {
      var observer = subscription._o;
      subscription._o = undefined;
      try {
        var m = getMethod(observer.complete);
        value = m ? m.call(observer, value) : undefined;
      } catch (e) {
        try {
          cleanupSubscription(subscription);
        } finally {
          throw e;
        }
      } cleanupSubscription(subscription);
      return value;
    }
  }
});

var $Observable = function Observable(subscriber) {
  anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);
};

redefineAll($Observable.prototype, {
  subscribe: function subscribe(observer) {
    return new Subscription(observer, this._f);
  },
  forEach: function forEach(fn) {
    var that = this;
    return new (core.Promise || global.Promise)(function (resolve, reject) {
      aFunction(fn);
      var subscription = that.subscribe({
        next: function (value) {
          try {
            return fn(value);
          } catch (e) {
            reject(e);
            subscription.unsubscribe();
          }
        },
        error: reject,
        complete: resolve
      });
    });
  }
});

redefineAll($Observable, {
  from: function from(x) {
    var C = typeof this === 'function' ? this : $Observable;
    var method = getMethod(anObject(x)[OBSERVABLE]);
    if (method) {
      var observable = anObject(method.call(x));
      return observable.constructor === C ? observable : new C(function (observer) {
        return observable.subscribe(observer);
      });
    }
    return new C(function (observer) {
      var done = false;
      microtask(function () {
        if (!done) {
          try {
            if (forOf(x, false, function (it) {
              observer.next(it);
              if (done) return RETURN;
            }) === RETURN) return;
          } catch (e) {
            if (done) throw e;
            observer.error(e);
            return;
          } observer.complete();
        }
      });
      return function () { done = true; };
    });
  },
  of: function of() {
    for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];
    return new (typeof this === 'function' ? this : $Observable)(function (observer) {
      var done = false;
      microtask(function () {
        if (!done) {
          for (var j = 0; j < items.length; ++j) {
            observer.next(items[j]);
            if (done) return;
          } observer.complete();
        }
      });
      return function () { done = true; };
    });
  }
});

hide($Observable.prototype, OBSERVABLE, function () { return this; });

$export($export.G, { Observable: $Observable });

__webpack_require__(194)('Observable');


/***/ }),
/* 325 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// ie9- setTimeout & setInterval additional parameters fix
var global = __webpack_require__(4);
var $export = __webpack_require__(8);
var userAgent = __webpack_require__(218);
var slice = [].slice;
var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
var wrap = function (set) {
  return function (fn, time /* , ...args */) {
    var boundArgs = arguments.length > 2;
    var args = boundArgs ? slice.call(arguments, 2) : false;
    return set(boundArgs ? function () {
      // eslint-disable-next-line no-new-func
      (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);
    } : fn, time);
  };
};
$export($export.G + $export.B + $export.F * MSIE, {
  setTimeout: wrap(global.setTimeout),
  setInterval: wrap(global.setInterval)
});


/***/ }),
/* 326 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(8);
var $task = __webpack_require__(214);
$export($export.G + $export.B, {
  setImmediate: $task.set,
  clearImmediate: $task.clear
});


/***/ }),
/* 327 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $iterators = __webpack_require__(195);
var getKeys = __webpack_require__(31);
var redefine = __webpack_require__(18);
var global = __webpack_require__(4);
var hide = __webpack_require__(10);
var Iterators = __webpack_require__(130);
var wks = __webpack_require__(27);
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;

var DOMIterables = {
  CSSRuleList: true, // TODO: Not spec compliant, should be false.
  CSSStyleDeclaration: false,
  CSSValueList: false,
  ClientRectList: false,
  DOMRectList: false,
  DOMStringList: false,
  DOMTokenList: true,
  DataTransferItemList: false,
  FileList: false,
  HTMLAllCollection: false,
  HTMLCollection: false,
  HTMLFormElement: false,
  HTMLSelectElement: false,
  MediaList: true, // TODO: Not spec compliant, should be false.
  MimeTypeArray: false,
  NamedNodeMap: false,
  NodeList: true,
  PaintRequestList: false,
  Plugin: false,
  PluginArray: false,
  SVGLengthList: false,
  SVGNumberList: false,
  SVGPathSegList: false,
  SVGPointList: false,
  SVGStringList: false,
  SVGTransformList: false,
  SourceBufferList: false,
  StyleSheetList: true, // TODO: Not spec compliant, should be false.
  TextTrackCueList: false,
  TextTrackList: false,
  TouchList: false
};

for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
  var NAME = collections[i];
  var explicit = DOMIterables[NAME];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  var key;
  if (proto) {
    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
    Iterators[NAME] = ArrayValues;
    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
  }
}


/***/ }),
/* 328 */
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

/**
 * Copyright (c) 2014, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
 * additional grant of patent rights can be found in the PATENTS file in
 * the same directory.
 */

!(function(global) {
  "use strict";

  var Op = Object.prototype;
  var hasOwn = Op.hasOwnProperty;
  var undefined; // More compressible than void 0.
  var $Symbol = typeof Symbol === "function" ? Symbol : {};
  var iteratorSymbol = $Symbol.iterator || "@@iterator";
  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

  var inModule = "object" === "object";
  var runtime = global.regeneratorRuntime;
  if (runtime) {
    if (inModule) {
      // If regeneratorRuntime is defined globally and we're in a module,
      // make the exports object identical to regeneratorRuntime.
      module.exports = runtime;
    }
    // Don't bother evaluating the rest of this file if the runtime was
    // already defined globally.
    return;
  }

  // Define the runtime globally (as expected by generated code) as either
  // module.exports (if we're in a module) or a new, empty object.
  runtime = global.regeneratorRuntime = inModule ? module.exports : {};

  function wrap(innerFn, outerFn, self, tryLocsList) {
    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
    var generator = Object.create(protoGenerator.prototype);
    var context = new Context(tryLocsList || []);

    // The ._invoke method unifies the implementations of the .next,
    // .throw, and .return methods.
    generator._invoke = makeInvokeMethod(innerFn, self, context);

    return generator;
  }
  runtime.wrap = wrap;

  // Try/catch helper to minimize deoptimizations. Returns a completion
  // record like context.tryEntries[i].completion. This interface could
  // have been (and was previously) designed to take a closure to be
  // invoked without arguments, but in all the cases we care about we
  // already have an existing method we want to call, so there's no need
  // to create a new function object. We can even get away with assuming
  // the method takes exactly one argument, since that happens to be true
  // in every case, so we don't have to touch the arguments object. The
  // only additional allocation required is the completion record, which
  // has a stable shape and so hopefully should be cheap to allocate.
  function tryCatch(fn, obj, arg) {
    try {
      return { type: "normal", arg: fn.call(obj, arg) };
    } catch (err) {
      return { type: "throw", arg: err };
    }
  }

  var GenStateSuspendedStart = "suspendedStart";
  var GenStateSuspendedYield = "suspendedYield";
  var GenStateExecuting = "executing";
  var GenStateCompleted = "completed";

  // Returning this object from the innerFn has the same effect as
  // breaking out of the dispatch switch statement.
  var ContinueSentinel = {};

  // Dummy constructor functions that we use as the .constructor and
  // .constructor.prototype properties for functions that return Generator
  // objects. For full spec compliance, you may wish to configure your
  // minifier not to mangle the names of these two functions.
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}

  // This is a polyfill for %IteratorPrototype% for environments that
  // don't natively support it.
  var IteratorPrototype = {};
  IteratorPrototype[iteratorSymbol] = function () {
    return this;
  };

  var getProto = Object.getPrototypeOf;
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  if (NativeIteratorPrototype &&
      NativeIteratorPrototype !== Op &&
      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
    // This environment has a native %IteratorPrototype%; use it instead
    // of the polyfill.
    IteratorPrototype = NativeIteratorPrototype;
  }

  var Gp = GeneratorFunctionPrototype.prototype =
    Generator.prototype = Object.create(IteratorPrototype);
  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  GeneratorFunctionPrototype.constructor = GeneratorFunction;
  GeneratorFunctionPrototype[toStringTagSymbol] =
    GeneratorFunction.displayName = "GeneratorFunction";

  // Helper for defining the .next, .throw, and .return methods of the
  // Iterator interface in terms of a single ._invoke method.
  function defineIteratorMethods(prototype) {
    ["next", "throw", "return"].forEach(function(method) {
      prototype[method] = function(arg) {
        return this._invoke(method, arg);
      };
    });
  }

  runtime.isGeneratorFunction = function(genFun) {
    var ctor = typeof genFun === "function" && genFun.constructor;
    return ctor
      ? ctor === GeneratorFunction ||
        // For the native GeneratorFunction constructor, the best we can
        // do is to check its .name property.
        (ctor.displayName || ctor.name) === "GeneratorFunction"
      : false;
  };

  runtime.mark = function(genFun) {
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
    } else {
      genFun.__proto__ = GeneratorFunctionPrototype;
      if (!(toStringTagSymbol in genFun)) {
        genFun[toStringTagSymbol] = "GeneratorFunction";
      }
    }
    genFun.prototype = Object.create(Gp);
    return genFun;
  };

  // Within the body of any async function, `await x` is transformed to
  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  // `hasOwn.call(value, "__await")` to determine if the yielded value is
  // meant to be awaited.
  runtime.awrap = function(arg) {
    return { __await: arg };
  };

  function AsyncIterator(generator) {
    function invoke(method, arg, resolve, reject) {
      var record = tryCatch(generator[method], generator, arg);
      if (record.type === "throw") {
        reject(record.arg);
      } else {
        var result = record.arg;
        var value = result.value;
        if (value &&
            typeof value === "object" &&
            hasOwn.call(value, "__await")) {
          return Promise.resolve(value.__await).then(function(value) {
            invoke("next", value, resolve, reject);
          }, function(err) {
            invoke("throw", err, resolve, reject);
          });
        }

        return Promise.resolve(value).then(function(unwrapped) {
          // When a yielded Promise is resolved, its final value becomes
          // the .value of the Promise<{value,done}> result for the
          // current iteration. If the Promise is rejected, however, the
          // result for this iteration will be rejected with the same
          // reason. Note that rejections of yielded Promises are not
          // thrown back into the generator function, as is the case
          // when an awaited Promise is rejected. This difference in
          // behavior between yield and await is important, because it
          // allows the consumer to decide what to do with the yielded
          // rejection (swallow it and continue, manually .throw it back
          // into the generator, abandon iteration, whatever). With
          // await, by contrast, there is no opportunity to examine the
          // rejection reason outside the generator function, so the
          // only option is to throw it from the await expression, and
          // let the generator function handle the exception.
          result.value = unwrapped;
          resolve(result);
        }, reject);
      }
    }

    if (typeof global.process === "object" && global.process.domain) {
      invoke = global.process.domain.bind(invoke);
    }

    var previousPromise;

    function enqueue(method, arg) {
      function callInvokeWithMethodAndArg() {
        return new Promise(function(resolve, reject) {
          invoke(method, arg, resolve, reject);
        });
      }

      return previousPromise =
        // If enqueue has been called before, then we want to wait until
        // all previous Promises have been resolved before calling invoke,
        // so that results are always delivered in the correct order. If
        // enqueue has not been called before, then it is important to
        // call invoke immediately, without waiting on a callback to fire,
        // so that the async generator function has the opportunity to do
        // any necessary setup in a predictable way. This predictability
        // is why the Promise constructor synchronously invokes its
        // executor callback, and why async functions synchronously
        // execute code before the first await. Since we implement simple
        // async functions in terms of async generators, it is especially
        // important to get this right, even though it requires care.
        previousPromise ? previousPromise.then(
          callInvokeWithMethodAndArg,
          // Avoid propagating failures to Promises returned by later
          // invocations of the iterator.
          callInvokeWithMethodAndArg
        ) : callInvokeWithMethodAndArg();
    }

    // Define the unified helper method that is used to implement .next,
    // .throw, and .return (see defineIteratorMethods).
    this._invoke = enqueue;
  }

  defineIteratorMethods(AsyncIterator.prototype);
  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
    return this;
  };
  runtime.AsyncIterator = AsyncIterator;

  // Note that simple async functions are implemented on top of
  // AsyncIterator objects; they just return a Promise for the value of
  // the final result produced by the iterator.
  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
    var iter = new AsyncIterator(
      wrap(innerFn, outerFn, self, tryLocsList)
    );

    return runtime.isGeneratorFunction(outerFn)
      ? iter // If outerFn is a generator, return the full iterator.
      : iter.next().then(function(result) {
          return result.done ? result.value : iter.next();
        });
  };

  function makeInvokeMethod(innerFn, self, context) {
    var state = GenStateSuspendedStart;

    return function invoke(method, arg) {
      if (state === GenStateExecuting) {
        throw new Error("Generator is already running");
      }

      if (state === GenStateCompleted) {
        if (method === "throw") {
          throw arg;
        }

        // Be forgiving, per 25.3.3.3.3 of the spec:
        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
        return doneResult();
      }

      context.method = method;
      context.arg = arg;

      while (true) {
        var delegate = context.delegate;
        if (delegate) {
          var delegateResult = maybeInvokeDelegate(delegate, context);
          if (delegateResult) {
            if (delegateResult === ContinueSentinel) continue;
            return delegateResult;
          }
        }

        if (context.method === "next") {
          // Setting context._sent for legacy support of Babel's
          // function.sent implementation.
          context.sent = context._sent = context.arg;

        } else if (context.method === "throw") {
          if (state === GenStateSuspendedStart) {
            state = GenStateCompleted;
            throw context.arg;
          }

          context.dispatchException(context.arg);

        } else if (context.method === "return") {
          context.abrupt("return", context.arg);
        }

        state = GenStateExecuting;

        var record = tryCatch(innerFn, self, context);
        if (record.type === "normal") {
          // If an exception is thrown from innerFn, we leave state ===
          // GenStateExecuting and loop back for another invocation.
          state = context.done
            ? GenStateCompleted
            : GenStateSuspendedYield;

          if (record.arg === ContinueSentinel) {
            continue;
          }

          return {
            value: record.arg,
            done: context.done
          };

        } else if (record.type === "throw") {
          state = GenStateCompleted;
          // Dispatch the exception by looping back around to the
          // context.dispatchException(context.arg) call above.
          context.method = "throw";
          context.arg = record.arg;
        }
      }
    };
  }

  // Call delegate.iterator[context.method](context.arg) and handle the
  // result, either by returning a { value, done } result from the
  // delegate iterator, or by modifying context.method and context.arg,
  // setting context.delegate to null, and returning the ContinueSentinel.
  function maybeInvokeDelegate(delegate, context) {
    var method = delegate.iterator[context.method];
    if (method === undefined) {
      // A .throw or .return when the delegate iterator has no .throw
      // method always terminates the yield* loop.
      context.delegate = null;

      if (context.method === "throw") {
        if (delegate.iterator.return) {
          // If the delegate iterator has a return method, give it a
          // chance to clean up.
          context.method = "return";
          context.arg = undefined;
          maybeInvokeDelegate(delegate, context);

          if (context.method === "throw") {
            // If maybeInvokeDelegate(context) changed context.method from
            // "return" to "throw", let that override the TypeError below.
            return ContinueSentinel;
          }
        }

        context.method = "throw";
        context.arg = new TypeError(
          "The iterator does not provide a 'throw' method");
      }

      return ContinueSentinel;
    }

    var record = tryCatch(method, delegate.iterator, context.arg);

    if (record.type === "throw") {
      context.method = "throw";
      context.arg = record.arg;
      context.delegate = null;
      return ContinueSentinel;
    }

    var info = record.arg;

    if (! info) {
      context.method = "throw";
      context.arg = new TypeError("iterator result is not an object");
      context.delegate = null;
      return ContinueSentinel;
    }

    if (info.done) {
      // Assign the result of the finished delegate to the temporary
      // variable specified by delegate.resultName (see delegateYield).
      context[delegate.resultName] = info.value;

      // Resume execution at the desired location (see delegateYield).
      context.next = delegate.nextLoc;

      // If context.method was "throw" but the delegate handled the
      // exception, let the outer generator proceed normally. If
      // context.method was "next", forget context.arg since it has been
      // "consumed" by the delegate iterator. If context.method was
      // "return", allow the original .return call to continue in the
      // outer generator.
      if (context.method !== "return") {
        context.method = "next";
        context.arg = undefined;
      }

    } else {
      // Re-yield the result returned by the delegate method.
      return info;
    }

    // The delegate iterator is finished, so forget it and continue with
    // the outer generator.
    context.delegate = null;
    return ContinueSentinel;
  }

  // Define Generator.prototype.{next,throw,return} in terms of the
  // unified ._invoke helper method.
  defineIteratorMethods(Gp);

  Gp[toStringTagSymbol] = "Generator";

  // A Generator should always return itself as the iterator object when the
  // @@iterator function is called on it. Some browsers' implementations of the
  // iterator prototype chain incorrectly implement this, causing the Generator
  // object to not be returned from this call. This ensures that doesn't happen.
  // See https://github.com/facebook/regenerator/issues/274 for more details.
  Gp[iteratorSymbol] = function() {
    return this;
  };

  Gp.toString = function() {
    return "[object Generator]";
  };

  function pushTryEntry(locs) {
    var entry = { tryLoc: locs[0] };

    if (1 in locs) {
      entry.catchLoc = locs[1];
    }

    if (2 in locs) {
      entry.finallyLoc = locs[2];
      entry.afterLoc = locs[3];
    }

    this.tryEntries.push(entry);
  }

  function resetTryEntry(entry) {
    var record = entry.completion || {};
    record.type = "normal";
    delete record.arg;
    entry.completion = record;
  }

  function Context(tryLocsList) {
    // The root entry object (effectively a try statement without a catch
    // or a finally block) gives us a place to store values thrown from
    // locations where there is no enclosing try statement.
    this.tryEntries = [{ tryLoc: "root" }];
    tryLocsList.forEach(pushTryEntry, this);
    this.reset(true);
  }

  runtime.keys = function(object) {
    var keys = [];
    for (var key in object) {
      keys.push(key);
    }
    keys.reverse();

    // Rather than returning an object with a next method, we keep
    // things simple and return the next function itself.
    return function next() {
      while (keys.length) {
        var key = keys.pop();
        if (key in object) {
          next.value = key;
          next.done = false;
          return next;
        }
      }

      // To avoid creating an additional object, we just hang the .value
      // and .done properties off the next function object itself. This
      // also ensures that the minifier will not anonymize the function.
      next.done = true;
      return next;
    };
  };

  function values(iterable) {
    if (iterable) {
      var iteratorMethod = iterable[iteratorSymbol];
      if (iteratorMethod) {
        return iteratorMethod.call(iterable);
      }

      if (typeof iterable.next === "function") {
        return iterable;
      }

      if (!isNaN(iterable.length)) {
        var i = -1, next = function next() {
          while (++i < iterable.length) {
            if (hasOwn.call(iterable, i)) {
              next.value = iterable[i];
              next.done = false;
              return next;
            }
          }

          next.value = undefined;
          next.done = true;

          return next;
        };

        return next.next = next;
      }
    }

    // Return an iterator with no values.
    return { next: doneResult };
  }
  runtime.values = values;

  function doneResult() {
    return { value: undefined, done: true };
  }

  Context.prototype = {
    constructor: Context,

    reset: function(skipTempReset) {
      this.prev = 0;
      this.next = 0;
      // Resetting context._sent for legacy support of Babel's
      // function.sent implementation.
      this.sent = this._sent = undefined;
      this.done = false;
      this.delegate = null;

      this.method = "next";
      this.arg = undefined;

      this.tryEntries.forEach(resetTryEntry);

      if (!skipTempReset) {
        for (var name in this) {
          // Not sure about the optimal order of these conditions:
          if (name.charAt(0) === "t" &&
              hasOwn.call(this, name) &&
              !isNaN(+name.slice(1))) {
            this[name] = undefined;
          }
        }
      }
    },

    stop: function() {
      this.done = true;

      var rootEntry = this.tryEntries[0];
      var rootRecord = rootEntry.completion;
      if (rootRecord.type === "throw") {
        throw rootRecord.arg;
      }

      return this.rval;
    },

    dispatchException: function(exception) {
      if (this.done) {
        throw exception;
      }

      var context = this;
      function handle(loc, caught) {
        record.type = "throw";
        record.arg = exception;
        context.next = loc;

        if (caught) {
          // If the dispatched exception was caught by a catch block,
          // then let that catch block handle the exception normally.
          context.method = "next";
          context.arg = undefined;
        }

        return !! caught;
      }

      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        var record = entry.completion;

        if (entry.tryLoc === "root") {
          // Exception thrown outside of any try block that could handle
          // it, so set the completion value of the entire function to
          // throw the exception.
          return handle("end");
        }

        if (entry.tryLoc <= this.prev) {
          var hasCatch = hasOwn.call(entry, "catchLoc");
          var hasFinally = hasOwn.call(entry, "finallyLoc");

          if (hasCatch && hasFinally) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            } else if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else if (hasCatch) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            }

          } else if (hasFinally) {
            if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else {
            throw new Error("try statement without catch or finally");
          }
        }
      }
    },

    abrupt: function(type, arg) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc <= this.prev &&
            hasOwn.call(entry, "finallyLoc") &&
            this.prev < entry.finallyLoc) {
          var finallyEntry = entry;
          break;
        }
      }

      if (finallyEntry &&
          (type === "break" ||
           type === "continue") &&
          finallyEntry.tryLoc <= arg &&
          arg <= finallyEntry.finallyLoc) {
        // Ignore the finally entry if control is not jumping to a
        // location outside the try/catch block.
        finallyEntry = null;
      }

      var record = finallyEntry ? finallyEntry.completion : {};
      record.type = type;
      record.arg = arg;

      if (finallyEntry) {
        this.method = "next";
        this.next = finallyEntry.finallyLoc;
        return ContinueSentinel;
      }

      return this.complete(record);
    },

    complete: function(record, afterLoc) {
      if (record.type === "throw") {
        throw record.arg;
      }

      if (record.type === "break" ||
          record.type === "continue") {
        this.next = record.arg;
      } else if (record.type === "return") {
        this.rval = this.arg = record.arg;
        this.method = "return";
        this.next = "end";
      } else if (record.type === "normal" && afterLoc) {
        this.next = afterLoc;
      }

      return ContinueSentinel;
    },

    finish: function(finallyLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.finallyLoc === finallyLoc) {
          this.complete(entry.completion, entry.afterLoc);
          resetTryEntry(entry);
          return ContinueSentinel;
        }
      }
    },

    "catch": function(tryLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc === tryLoc) {
          var record = entry.completion;
          if (record.type === "throw") {
            var thrown = record.arg;
            resetTryEntry(entry);
          }
          return thrown;
        }
      }

      // The context.catch method must only be called with a location
      // argument that corresponds to a known catch block.
      throw new Error("illegal catch attempt");
    },

    delegateYield: function(iterable, resultName, nextLoc) {
      this.delegate = {
        iterator: values(iterable),
        resultName: resultName,
        nextLoc: nextLoc
      };

      if (this.method === "next") {
        // Deliberately forget the last sent value so that we don't
        // accidentally pass it on to the delegate.
        this.arg = undefined;
      }

      return ContinueSentinel;
    }
  };
})(
  // Among the various tricks for obtaining a reference to the global
  // object, this seems to be the most reliable technique that does not
  // use indirect eval (which violates Content Security Policy).
  typeof __webpack_require__.g === "object" ? __webpack_require__.g :
  typeof window === "object" ? window :
  typeof self === "object" ? self : this
);


/***/ }),
/* 329 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(330);
module.exports = __webpack_require__(9).RegExp.escape;


/***/ }),
/* 330 */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/benjamingr/RexExp.escape
var $export = __webpack_require__(8);
var $re = __webpack_require__(331)(/[\\^$*+?.()|[\]{}]/g, '\\$&');

$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });


/***/ }),
/* 331 */
/***/ ((module) => {

module.exports = function (regExp, replace) {
  var replacer = replace === Object(replace) ? function (part) {
    return replace[part];
  } : replace;
  return function (it) {
    return String(it).replace(regExp, replacer);
  };
};


/***/ }),
/* 332 */
/***/ (() => {

/**
 * 重写Attribution方法的options属性，去掉leaflet商标
 */
L.Control.Attribution.prototype.options={
    position: 'bottomright'
};

/**
 * 重写手势缩放的bug
 */
L.Map.TouchZoom.prototype._onTouchMove=(function(_super) {
    return function(e) {
        if (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }

        var map = this._map,
            p1 = map.mouseEventToContainerPoint(e.touches[0]),
            p2 = map.mouseEventToContainerPoint(e.touches[1]),
            scale = p1.distanceTo(p2) / this._startDist;


        this._zoom = map.getScaleZoom(scale, this._startZoom)+1;

        if (!map.options.bounceAtZoomLimits && (
                (this._zoom < map.getMinZoom() && scale < 1) ||
                (this._zoom > map.getMaxZoom() && scale > 1))) {
            this._zoom = map._limitZoom(this._zoom);
        }

        if (map.options.touchZoom === 'center') {
            this._center = this._startLatLng;
            if (scale === 1) { return; }
        } else {
            // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng
            var delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);
            if (scale === 1 && delta.x === 0 && delta.y === 0) { return; }
            this._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);
        }

        if (!this._moved) {
            map._moveStart(true);
            this._moved = true;
        }

        L.Util.cancelAnimFrame(this._animRequest);

        var moveFn = L.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false});
        this._animRequest = L.Util.requestAnimFrame(moveFn, this, true);

        L.DomEvent.preventDefault(e);
    };
})(L.Map.TouchZoom.prototype._onTouchMove);


/**
 * 重写flyTo函数，解决该函数产生的小数缩放级别的bug
 */
L.Map.prototype.flyTo=(function(_super) {
    return function(targetCenter, targetZoom, options) {
        options = options || {};
        if (options.animate === false || !L.Browser.any3d) {
            return this.setView(targetCenter, targetZoom, options);
        }

        this._stop();

        var from = this.project(this.getCenter()),
            to = this.project(targetCenter),
            size = this.getSize(),
            startZoom = this._zoom;

        targetCenter = L.latLng(targetCenter);
        targetZoom = targetZoom === undefined ? startZoom : targetZoom;

        var w0 = Math.max(size.x, size.y),
            w1 = w0 * this.getZoomScale(startZoom, targetZoom),
            u1 = (to.distanceTo(from)) || 1,
            rho = 1.42,
            rho2 = rho * rho;

        function r(i) {
            var s1 = i ? -1 : 1,
                s2 = i ? w1 : w0,
                t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,
                b1 = 2 * s2 * rho2 * u1,
                b = t1 / b1,
                sq = Math.sqrt(b * b + 1) - b;

            // workaround for floating point precision bug when sq = 0, log = -Infinite,
            // thus triggering an infinite loop in flyTo
            var log = sq < 0.000000001 ? -18 : Math.log(sq);

            return log;
        }

        function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }
        function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }
        function tanh(n) { return sinh(n) / cosh(n); }

        var r0 = r(0);

        function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }
        function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }

        function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }

        var start = Date.now(),
            S = (r(1) - r0) / rho,
            duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;

        function frame() {
            var t = (Date.now() - start) / duration,
                s = easeOut(t) * S;

            if (t <= 1) {
                this._flyToFrame = L.Util.requestAnimFrame(frame, this);

                this._move(
                    this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),
                    this.getScaleZoom(w0 / w(s), startZoom),
                    {flyTo: true});

            } else {
                //增加这行，保证flyto完成后，地图的层级为整数
                targetZoom = Math.round(targetZoom);
                this
                    ._move(targetCenter, targetZoom)
                    ._moveEnd(true);
            }
        }

        this._moveStart(true);

        frame.call(this);
        return this;
    };
})(L.Map.prototype.flyTo);


/**
 * 如果是ie浏览器，则增加startsWith和endsWith方法
 */
if (!!window.ActiveXObject || "ActiveXObject" in window) {
    String.prototype.startsWith = function (str) {

        if (str == null || str == "" || this.length == 0 || str.length > this.length)
            return false;
        if (this.substr(0, str.length) == str)
            return true;
        else
            return false;
        return true;
    };

    String.prototype.endsWith = function(str) {
        if (!!window.ActiveXObject || "ActiveXObject" in window) {
            return this.indexOf(str, this.length - str.length) !== -1;
        }else{
            return this.endsWith(str);
        }
    };
}

/***/ }),
/* 333 */
/***/ ((module) => {

/*
 * @namespace CRS
 * @crs L.CRS.EPSG4326
 *
 * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.
 *
 * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),
 * which is a breaking change from 0.7.x behaviour.  If you are using a `TileLayer`
 * with this CRS, ensure that there are two 256x256 pixel tiles covering the
 * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),
 * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.
 */
var CustomEPSG4326 = L.extend({}, L.CRS.Earth, {
	code: 'EPSG:4326',
	projection: L.Projection.LonLat,
	transformation: new L.Transformation(1 / 180, 1, -1 / 180, 0.5),
    scale: function (zoom) {
        return 256 * Math.pow(2, zoom-1);
    }
});
module.exports = CustomEPSG4326;


/***/ }),
/* 334 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/30.
 */
const UUID = __webpack_require__(335);
class DataSource{
    constructor() {
        //数据源id
        this.id = new UUID().valueOf();
        //数据源类型
        this.type = "";
        //key为文件名，value为image对象
        this.textures = {};
    }
};

module.exports = DataSource;

/***/ }),
/* 335 */
/***/ ((module) => {

function UUID() {
	this.id = this.createUUID()
}
UUID.prototype.valueOf = function() {
	return this.id
};
UUID.prototype.toString = function() {
	return this.id
};
UUID.prototype.createUUID = function() {
	var c = new Date(1582, 10, 15, 0, 0, 0, 0);
	var f = new Date();
	var h = f.getTime() - c.getTime();
	var i = UUID.getIntegerBits(h, 0, 31);
	var g = UUID.getIntegerBits(h, 32, 47);
	var e = UUID.getIntegerBits(h, 48, 59) + "2";
	var b = UUID.getIntegerBits(UUID.rand(4095), 0, 7);
	var d = UUID.getIntegerBits(UUID.rand(4095), 0, 7);
	var a = UUID.getIntegerBits(UUID.rand(8191), 0, 7)
			+ UUID.getIntegerBits(UUID.rand(8191), 8, 15)
			+ UUID.getIntegerBits(UUID.rand(8191), 0, 7)
			+ UUID.getIntegerBits(UUID.rand(8191), 8, 15)
			+ UUID.getIntegerBits(UUID.rand(8191), 0, 15);
	return i + g + e + b + d + a
};
UUID.getIntegerBits = function(f, g, b) {
	var a = UUID.returnBase(f, 16);
	var d = new Array();
	var e = "";
	var c = 0;
	for (c = 0; c < a.length; c++) {
		d.push(a.substring(c, c + 1))
	}
	for (c = Math.floor(g / 4); c <= Math.floor(b / 4); c++) {
		if (!d[c] || d[c] == "") {
			e += "0"
		} else {
			e += d[c]
		}
	}
	return e
};
UUID.returnBase = function(c, d) {
	var e = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C",
			"D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
			"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
	if (c < d) {
		var b = e[c]
	} else {
		var f = "" + Math.floor(c / d);
		var a = c - f * d;
		if (f >= d) {
			var b = this.returnBase(f, d) + e[a]
		} else {
			var b = e[f] + e[a]
		}
	}
	return b
};
UUID.rand = function(a) {
	return Math.floor(Math.random() * a)
};

module.exports = UUID;

/***/ }),
/* 336 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/30.
 */
const DataSource = __webpack_require__(334);
const { Deferred, getJSON } = __webpack_require__(337);
const Version = __webpack_require__(339);
class URLDataSource extends DataSource {
    constructor() {
        super();
        //多个服务器url的域名，用于解决一个域名只有6条请求管线的限制
        this.urlArray = [];
        //数据源类型
        this.type = 'URLDataSource';
        //注记数据的请求url
        this.url = null;
        //样式文件的请求接口url
        this.styleUrl = null;
        //样式文件Id
        this.styleId = 'style';
        //过滤条件
        this.filter = null;
        //纹理
        this.textures = {};
        //过滤条件字符
        this.control = null;
        //过滤的id
        this.controlId = null;
        // 不带过滤条件的url
        this.sourceUrl = null;
        //域名
        this.host = '';
        //服务名
        this.servername = '';
    }



    /**
     * 加载样式文件和纹理数据
     */
    loadStyle(styleType) {
        let def0 = new Deferred();
        let def1 = new Deferred();
        let def2 = new Deferred();

        //解析url，获取servername,styleId
        this.parseUrl();
        let queryParam = this.url.split('?')[1];

        if (!this.sourceUrl) {
            this.sourceUrl = this.url + '&clientVersion=' + Version;
            this.url = this.url + '&clientVersion=' + Version;
        }

        if (this.control && this.isIE()) {
            //设置过滤条件
            getJSON({
                type: 'post', url: this.host + '/mapserver/vmap/' + this.servername + '/setControl',
                data: 'control=' + this.control,
                dataType: 'json'
            })
                .then(function (result) {
                    this.controlId = result.id;
                    this.url = this.sourceUrl + '&controlId=' + result.id;
                    def0.resolve();
                }.bind(this));
        } else {
            if (this.control) {
                this.url = this.sourceUrl + '&control=' + encodeURIComponent(this.control);
            } else {
                this.url = this.sourceUrl;
            }
            def0.resolve();
        }

        if (!styleType) {
            styleType = 'label';
        }

        if (this.styleId == '_default__') {
            let styleStr = 'var layers = drawer.getAllLayer(); layers.setStyle(function(level , get){' +
                ' return {"type":"_default__","show":true,"pointFillStyle":"#ff0000","radius":5,"lineFillStyle":"#00ff00","lineWidth":3 }' +
                '})';
            this.styleFun = new Function("drawer", "level", styleStr);
            return [def0];
        }
        if (!this.styleUrl) {
            this.styleUrl = this.host + '/mapserver/styleInfo/' + this.servername + '/' + this.styleId + '/' + styleType + '/style.js?' + Math.random() + '&' + queryParam;

        }
        //请求样式文件
        getJSON({ url: this.styleUrl, dataType: 'text' })
            .then(function (result) {
                this.styleFun = new Function("drawer", "level", result);
                def1.resolve();
            }.bind(this));


        //请求图标纹理
        getJSON({ url: this.host + '/mapserver/styleInfo/' + this.servername + '/' + this.styleId + '/label/texture.js?' + Math.random() + '&' + queryParam, dataType: 'text' }).then(function (result) {
            let textures = JSON.parse(result);
            let totalCount = 0;
            for (let i in textures) {
                totalCount++;
            }

            if (totalCount == 0) {
                def2.resolve();
                return;
            }

            let count = 0;
            for (let key in textures) {
                let img = new Image();
                img.name = key;
                img.onload = function (data) {
                    count++;
                    let name = data.target.name;
                    this.textures[name] = data.target;
                    if (count == totalCount) {
                        def2.resolve();
                    }
                }.bind(this);
                img.src = textures[key];
            }
        }.bind(this));
        return [def0, def1, def2];
    }

    /**
     * 解析url
     */
    parseUrl() {
        let urlParts = this.url.split('?');
        let urlPartOne = urlParts[0].split('/mapserver/');
        this.host = urlPartOne[0];
        this.servername = urlPartOne[1].split('/')[1];
        let params = urlParts[1].split('&');
        for (let i = 0; i < params.length; i++) {
            let param = params[i];
            let keyValue = param.split('=');
            if (keyValue[0] == 'styleId') {
                this.styleId = keyValue[1];
                return;
            }
        }
    };


    /**
     * 设置过滤条件
     */
    setFilter(filter) {
        this.control = null;
        if (!this.url || !filter || (filter.layers.length == 0 && filter.order.length == 0)) {
            return;
        }

        for (let i = 0; i < filter.layers.length; i++) {
            let filterLayer = filter.layers[i];
            if (!filterLayer.id) {
                filter.layers.splice(i, 1);
            }
        }

        this.control = JSON.stringify(filter);
    }

    getTexture(key) {
        return this.textures[key];
    }
    addTexture(key, texture) {
        this.textures[key] = texture;
    }


    /**
     * 是否为ie浏览器,ie9 除外，ie9无法跨域发送post带数据的请求
     */
    isIE() {
        if (!!window.ActiveXObject || "ActiveXObject" in window) {
            //ie9 除外，ie9无法跨域发送post带数据的请求
            var b_version = navigator.appVersion
            var version = b_version.split(";");
            if (version[1]) {
                var trim_Version = version[1].replace(/[ ]/g, "");
                if (trim_Version == 'MSIE9.0') {
                    return false;
                }
            }
            return true;
        }
        else
            return false;
    };
};

module.exports = URLDataSource;

/***/ }),
/* 337 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

const jx = __webpack_require__(338);

var Deferred = function() {
    this.promise = new Promise((function(resolve, reject) {
        this.resolve = resolve;
        this.reject = reject;
    }).bind(this));

    this.then = this.promise.then.bind(this.promise);
    this.catch = this.promise.catch.bind(this.promise);
};

var getJSON = function (param) {
    if(!param.type){
        param.type = 'GET';
    }
    if(!param.dataType){
        param.dataType = 'json';
    }
    return new Promise(function(resolve, reject){
        sendAjax(resolve, reject,param);
    });
}

var sendAjax = function(resolve, reject,param,returnParam){
    var UType = param.type.toUpperCase();
    var rq;
    if( UType== 'GET'){
        rq = jx.get(param.url);
    }
    if(UType == 'POST'){
        rq = jx.post(param.url, param.data);
    }
    var timeout = 30000;
    var time = false;//是否超时
    var timer = setTimeout(function(){
        if(rq.request.status >= 300 || rq.request.status < 200){
            time = true;
            rq.request.abort();//请求中止
            console.warn('timeout: '+ param.url);
            reject({param:param,data:'getParamJSON: ' + param.url + ' timeout '});
        }
    },timeout);

    rq.success(function(results, request) {
        if(time) {
            return;//忽略中止请求
        }

        if(param.dataType == 'json' && typeof(results) == 'string'){
            results = JSON.parse(results);
        }

        if(returnParam){
            resolve({param:param,data:results});
        }else{
            resolve(results);
        }
    });

    rq.error(function(results, request) {
        if(time){
            return; //终止请求报错
        }

        reject({param:param,data:'getParamJSON: ' + param.url + ' failed with status: ' + request.status + ''});
    });

    return rq.request;
}


var getParamJSON = function (param) {
    if(!param.type){
        param.type = 'GET';
    }
    if(!param.dataType){
        param.dataType = 'json';
    }

    var xhr;
    var promise =  new Promise(function(resolve, reject){
        xhr = sendAjax(resolve, reject,param,true);
    });

    promise.xhr = xhr;
    return promise;
}




module.exports = {
    Deferred: Deferred,
    getJSON: getJSON,
    getParamJSON:getParamJSON
};

/***/ }),
/* 338 */
/***/ ((module) => {

!function(e){if(true)module.exports=e();else { var f; }}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=undefined;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=undefined;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
function toString(obj) {
	return Object.prototype.toString.call(obj);
}

function set(request, header, value) {
	request.setRequestHeader(header, value);
}


function noop() {};

var isRequested = false;
var isIE9 = false;
function req(url, type, json, data) {
	var methods = {
		success: noop,
		error: noop,
	};

    var request;
    if(!isRequested){
        var b_version=navigator.appVersion;
        var version=b_version.split(";");
        if(version[1]){
            var trim_Version=version[1].replace(/[ ]/g,"");
            isIE9 = trim_Version == 'MSIE9.0';
		}
        isRequested = true;
	}

    if(isIE9){
        request = new XDomainRequest();
    }else{
        request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
	}

    var hasPayload = type === 'POST' || type === 'PATCH' || type === 'DELETE';

	request.open(type, url, true);

	if(!isIE9){
        if (json) {
            set(request, 'Content-Type', 'application/json');
            set(request, 'Accept', 'application/json');
        } else {
            set(request, 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        }
	}


	if (hasPayload) {
		if (json) data = JSON.stringify(data);		
		// set(request, 'X-CSRFToken', csrf());
	}
	// set(request, 'X-Requested-With', 'XMLHttpRequest');
	
	request.onreadystatechange = function() {
		if (request.readyState === 4) {
			if (request.status >= 200 && request.status < 300) {
				methods.success.call(request, request.responseText, request);
			} else {
				methods.error.call(request, request.responseText, request);
			}
		}
	};

    request.onerror = function () {
        methods.error.call(request, request.responseText, request);
    };

    request.onload = function () {
        methods.success.call(request, request.responseText, request);
    };
	
	hasPayload ? request.send(data) : request.send();

	var returned = {
		success: function (callback) {
			methods.success = callback;
			return returned;
		},
		error: function (callback) {
			methods.error = callback;
			return returned;
		},
		request:request
	};

	return returned;
}

module.exports = {
	get: function(url) {
		return req(url, 'GET', false, null);
	},
	post: function(url, data) {
		return req(url, 'POST', false, data);
	},
	patch: function(url, data) {
		return req(url, 'PATCH', false, data);
	},
	"delete": function(url) {
		return req(url, 'DELETE', false, null);
	},
	json: {
		get: function(url) {
			return req(url, 'GET', true, null);
		},
		post: function(url, data) {
			return req(url, 'POST', true, data);
		},
		patch: function(url, data) {
			return req(url, 'PATCH', true, data);
		},
	},
};
},{}]},{},[1])(1)
});

/***/ }),
/* 339 */
/***/ ((module) => {

let versionStr = 'jssdk_bate@ leaflet 2.3.2';
module.exports  = versionStr;
console.log(versionStr);

/***/ }),
/* 340 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

const DataSource = __webpack_require__(334);
const {Deferred,getJSON} = __webpack_require__(337);
/**
 * Created by kongjian on 2017/6/30.
 */
class LocalDataSource extends DataSource{
    constructor() {
       super();
        //数据源类型
        this.type = 'LocalDataSource';
        //本地要素集合
        this.features = [];
        //图标url Map：{name:1.png,value:'http://localhost:8080/mapserver/1.png'}
        this.textureUrls = {};
    }



    /**
     * 添加feature
     * Parameters :
     * feature
     */
    addFeature(feature){
        this.features.push(feature);
    };

    /**
     * 添加url图标
     * Parameters :
     * name 图标名称,如：1.png
     * url 图标的请求地址
     */
    addTextureUrl(name,url){
        this.textureUrls[name] = url;
    };

    /**
     * 移除url图标
     * Parameters :
     * name 图标名称,如：1.png
     */
    removeTextureUrl(name){
       delete this.textureUrls[name];
    };

    /**
     * 加载纹理
     */
    loadTexture(){
        let def = new Deferred();
        let totalCount = 0;
        for(let i in this.textureUrls){
            totalCount++;
        }

        if(totalCount == 0){
            def.resolve();
            return;
        }

        let count = 0;
        for(let key in this.textureUrls){
            let img = new Image();
            img.name = key;
            img.onload = function(data) {
                count++;
                let name = data.target.name;
                this.textures[name] =data.target;
                if(count == totalCount){
                    def.resolve();
                }
            }.bind(this);
            img.src = this.textureUrls[key];
        }
        return def;
    };

    /**
     * 通过featureId移除feature
     * Parameters :
     * featureId
     */
    removeFeatureById(featureId){
        for(let i = 0;i<this.features.length;i++){
            let feature = this.features[i];
            if(feature.id == featureId){
                this.features.splice(i,1);
            }
        }
    }

};

module.exports = LocalDataSource;

/***/ }),
/* 341 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/9/26.
 * 后端避让后的注记，前端绘制显示图层
 */

const GXYZUtil = __webpack_require__(342);
const Version = __webpack_require__(339);
const GDrawGeomerty = __webpack_require__(345);
const {getJSON} = __webpack_require__(337);
var GLabelGrid  = L.TileLayer.extend({
    //多个服务器url的域名，用于解决一个域名只有6条请求管线的限制
    urlArray:[],
    // 不带过滤条件的url
    sourceUrl: null,
    // 纹理图标集合
    textures: {},
    //瓦片队列
    tileQueue:[],
    //缩放比例
    ratio:1,
    //瓦片大小
    tilesize:256,
    //过滤json对象
    control:null,
    //过滤的id
    controlId:null,
    //是否支持注记拾取
    hitDetection:false,
    initialize: function(url, options) {
        if(window.devicePixelRatio > 1.5){
            this.ratio = 2;
        }

        if(!this.sourceUrl){
            this.sourceUrl = url;
        }

        if(options &&options.tileSize){
            this.tilesize = options.tileSize;
        }

        this.gxyzUtil = new GXYZUtil();
        this.gxyzUtil.tileSize = this.tilesize;
        this.gxyzUtil.parseUrl(url);

        this._url = url +'&tilesize='+this.tilesize+'&clientVersion='+Version;
        L.setOptions(this,options);

        if(options){
            this.hitDetection = options.hitDetection;
        }
        this.on('tileunload', this._onTileRemove);
        this.on('tileload', this._onTileLoad);
        this.on('tileerror', this._onTileError);
    },

    _initContainer: function () {
        if (this._container) { return; }

        this._container = L.DomUtil.create('div', 'leaflet-pane leaflet-overlay-pane');
        this.getPane().appendChild(this._container);
    },

    onAdd: function () {
        if(this.control){
            this._url = this.sourceUrl +'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+this.control;
        }
        if(this.controlId){
            this._url = this.sourceUrl +'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&controlId='+this.controlId;
        }

        this._initContainer();

        this._levels = {};
        this._tiles = {};

        //请求图标纹理
        getJSON({url:this.gxyzUtil.host+ '/mapserver/styleInfo/'+this.gxyzUtil.servername+'/'+this.gxyzUtil.styleId+'/label/texture.js',dataType:'text'}).then(function(result){
            var textures = JSON.parse(result);
            var totalCount = 0;
            for(var i in textures){
                totalCount++;
            }

            if(totalCount == 0){
                this._resetView();
                this._update();
            }

            var count = 0;
            for(var key in textures){
                var img = new Image();
                img.name = key;
                img.onload = function(data) {
                    count++;
                    var name = data.target.name;
                    this.textures[name] =data.target;
                    if(count == totalCount){
                        this._resetView();
                        this._update();
                    }
                }.bind(this);
                img.src = textures[key];
            }
        }.bind(this));
    },

    /**
     * 重写构造瓦片的方法
     */
    createTile: function (coords, done) {
        //从队列中取canvas，避免频繁创建canvas
        var tile = this.tileQueue.pop();
        if(!tile){
            tile = this.initTile();
        }else{
            this._cleanTile(tile);
        }

        var url = this.getTileUrl(coords);

        getJSON({url:url,dataType:'json'})
            .then(function(data) {
                    tile.data = data;
                    this._tileOnLoad.apply(this, [done,tile]);
            }.bind(this),
              function(error){
                  this._tileOnError.apply(this, [done, tile,error]);
              }.bind(this));

        return tile;
    },

    /**
     * 获取url的方法
     */
    getTileUrl: function (coords) {
        var data = {
            r: L.Browser.retina ? '@2x' : '',
            s: this._getSubdomain(coords),
            x: coords.x,
            y: coords.y,
            z: this._getZoomForUrl()
        };
        if (this._map && !this._map.options.crs.infinite) {
            var invertedY = this._globalTileRange.max.y - coords.y;
            if (this.options.tms) {
                data['y'] = invertedY;
            }
            data['-y'] = invertedY;
        }

        if(this.urlArray.length == 0){
            return L.Util.template(this._url, L.extend(data, this.options));
        }else{
            //从urlArray中随机取出一个url
            var len = this.urlArray.length-1;
            var index = Math.round(Math.random()*len);
            var url = this.urlArray[index];

            var array = this._url.split('/mapserver');
            var partUrl = array[1];
            url = url + '/mapserver'+partUrl;
            return L.Util.template(url, L.extend(data, this.options));
        }
    },

    /**
     *  初始化canvas
     */
    initTile:function(){
        // console.time('initTile');
        var tile = document.createElement("canvas");
        tile.style.width = this.tilesize + "px";
        tile.style.height = this.tilesize + "px";
        tile.width = this.tilesize;
        tile.height = this.tilesize;

        var ctx = tile.getContext("2d",{isQuality:true});
        tile.ctx = ctx;

        if(this.hitDetection){
            var canvas = document.createElement("canvas");
            canvas.style.width = this.tilesize + "px";
            canvas.style.height = this.tilesize + "px";
            canvas.width = this.tilesize;
            canvas.height = this.tilesize;
            var hitCtx = canvas.getContext("2d",{isQuality:true});
            tile.hitCtx = hitCtx;
        }
        // console.timeEnd('initTile');
        return tile;
    },

    //移除瓦片
    _onTileRemove: function (e) {
        //加入到瓦片队列
        this.tileQueue.push(e.tile);
    },

    /**
     *  重写，取消请求的操作
     */
    _abortLoading: function () {
        var i, tile;
        for (i in this._tiles) {
            if (this._tiles[i].coords.z !== this._tileZoom) {
                tile = this._tiles[i].el;

                // if (!tile.complete) { // 是否要缩放时，注记放大效果
                    L.DomUtil.remove(tile);
                // }
            }
        }
    },

    _onTileLoad:function(item){
        var tile = item.tile;
        this._drawTile(tile,tile.data);
        tile.complete = true;
    },

    _onTileError:function(item){
        var tile = item.tile;
        tile.complete = true;
        this.tileQueue.push(tile);
    },

    _tileOnError: function (done, tile, e) {
        done(e, tile);
    },

    _drawTile:function(tile,features){
        // console.time('_drawTile');
        var ctx = tile.ctx;
        var hitCtx = tile.hitCtx;
        var featureIdMap = {};
        for(var i = 0;i<features.length;i++){
            var feature = features[i];
            //画点注记
            if(feature.type == 1){
                feature.id = Math.round(Math.random()*256*256*256);
                featureIdMap[feature.id] = feature;
                feature.iconImg = this.textures[feature.style.texture];
                GDrawGeomerty.drawPointIcon(ctx,feature,this.ratio,false,tile.hitCtx, this.hitDetection);
                GDrawGeomerty.drawPoint(ctx,feature,this.ratio,false,false,tile.hitCtx, this.hitDetection);
                continue;
            }
            //画线注记
            if(feature.type == 2){
                GDrawGeomerty.drawLine(ctx,feature,this.ratio);
            }
        }

        //用于拾取查找
        tile.featureIdMap = featureIdMap;
        // console.timeEnd('_drawTile');
    },

    _cleanTile:function(tile){
        tile.ctx.clearRect(0, 0, this.tilesize, this.tilesize);
        if(tile.hitCtx){
            tile.hitCtx.clearRect(0, 0, this.tilesize, this.tilesize);
        }
    },

    /**
     * 根据屏幕坐标获取feature
     * Parameters :
     * x
     * y
     */
    getFeatureByXY : function(x,y) {
        var feature = null;
        if (this.hitDetection) {
            var featureId;

            var latLng = this._map.containerPointToLatLng(new L.point(x,y));
            var maxBounds = this._map.options.crs.projection.bounds;
            //地图当前范围
            var bounds = this._map.getBounds();
            var pBounds = this._map.getPixelBounds();
            //地图当前分辨率
            var res = (bounds._northEast.lat - bounds._southWest.lat)/(pBounds.max.y - pBounds.min.y);

            var tileSize = this.tilesize;
            var row = (maxBounds.max.y - latLng.lat) /(res*tileSize);
            var col = (latLng.lng - maxBounds.min.x)/(res*tileSize);
            var frow = Math.floor(row);
            var fcol = Math.floor(col);
            var level = this._map.getZoom();

            var tile = this._tiles[fcol+':'+frow+':'+level].el;

            var tx = (col - fcol)*tileSize;
            var ty = (row - frow)*tileSize;
            var data = tile.hitCtx.getImageData(tx, ty, 1, 1).data;
            if (data[3] === 255) { // antialiased
                var id = data[2] + (256 * (data[1] + (256 * data[0])));
                if (id) {
                    featureId = id - 1 ;
                    try {
                        feature = tile.featureIdMap[featureId];
                    } catch(err) {
                    }
                }
            }
        }
        return feature;
    },

    _update: function (center) {
        if(this.isSetIngFilter){
            return;
        }
        L.TileLayer.prototype._update.call(this);
    },

    /**
     * 设置过滤条件
     */
    setFilter:function(filter){
        this.isSetIngFilter = true;
        if(!this._url ||  !filter || (filter.layers.length == 0 && filter.order.length == 0)){
            this.isSetIngFilter =false;
            this.controlId = null;
            this.control = null;
            this.setUrl(this.sourceUrl +'&tilesize='+this.tilesize+'&clientVersion='+Version);
            return;
        }

        this.gxyzUtil.setFilter(filter,function(result){
            this.isSetIngFilter = false;
            if(result.isIE){
                this.controlId = result.id;
                this.setUrl(this.sourceUrl +'&tilesize='+this.tilesize+'&clientVersion='+Version + '&controlId='+result.id);
            }else{
                this.control = result.id;
                this.setUrl(this.sourceUrl +'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+result.id);
            }
        }.bind(this));
    }
})

module.exports = GLabelGrid;

/***/ }),
/* 342 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 */
const {getJSON} = __webpack_require__(337);
const Filter = __webpack_require__(343);
const FilterLayer = __webpack_require__(344);
const Version = __webpack_require__(339);
class GXYZUtil{
    constructor() {
        this.tileSize=256;
    }

    /**
     * 设置过滤条件
     */
    setFilter(filter,callback){
        for(var i = 0;i<filter.layers.length;i++){
            var filterLayer = filter.layers[i];
            if(!filterLayer.id){
                filter.layers.splice(i,1);
            }
        }

        var control = JSON.stringify(filter);
        if(this.isIE()){
            //设置过滤条件
            getJSON({type:'post',url:this.host + '/mapserver/vmap/'+this.servername+'/setControl',
                data:'control= '+ control,
                dataType:'json'}).then(function(result){
                result.isIE = true;
                callback(result);
            }.bind(this));
        }else{
            var result = {isIE:false,id:encodeURIComponent(control)};
            callback(result);
        }
    };


    /**
     * 解析url
     */
    parseUrl(url){
        let urlParts = url.split('?');
        // var urlPartOne = urlParts[0].split('/mapserver/vmap/');
        let urlPartOne = urlParts[0].split('/mapserver/');
        this.host = urlPartOne[0];
        this.servername = urlPartOne[1].split('/')[1];

        this.queryParam = urlParts[1];
        let params = this.queryParam.split('&');
        for(let i = 0;i<params.length;i++){
            let param = params[i];
            let keyValue = param.split('=');
            if(keyValue[0] == 'styleId'){
                this.styleId = keyValue[1];
                return;
            }
        }
    };

    /**
     * 拾取要素
     * Parameters :
     * row - 要拾取的要素所在的行
     * col - 要拾取的要素所在的列
     * level - 要拾取的要素所在的层级
     * x - 要拾取的要素所在瓦片内的x坐标
     * y - 要拾取的要素所在瓦片内y坐标
     * control - 过滤的json对象
     * controlId - 过滤对象在服务器上存的key
     * callback - 拾取到要素后的回调函数
     */
    pickupFeatures(row,col,level,x,y,control,controlId,callback) {
        var url = this.host + '/mapserver/pickup/'+this.servername+'/getData?'+this.queryParam+'&x='+col +'&y='+row+'&l='+level+
            '&pixelX='+x+'&pixelY='+y+'&tilesize='+this.tileSize+'&clientVersion='+Version;
        if(control){
            url = url + '&control='+control;
        }
        if(controlId){
            url = url + '&controlId='+controlId;
        }

        getJSON({
            url:url,
            dataType: "json"}).then(function (features) {
            callback(features);
        },function(){
            callback([]);
        })
    };

    /**
     * 拾取要素
     * Parameters :
     * lon - 要拾取的要素的经度
     * lat - 要拾取的要素的纬度
     * level - 要拾取的要素所在的层级
     * control - 过滤的json对象
     * controlId - 过滤对象在服务器上存的key
     * callback - 拾取到要素后的回调函数
     */
    pickupFeaturesByLonlat(lon,lat,level,control,controlId,callback) {
        var url = this.host + '/mapserver/'+this.servername+'/'+this.styleId+'/pickup?'+this.queryParam+
            '&l='+level +'&lon='+lon+'&lat='+lat+'&tilesize='+this.tileSize+'&clientVersion='+Version;
        if(control){
            url = url + '&control='+control;
        }
        if(controlId){
            url = url + '&controlId='+controlId;
        }

        getJSON({
            url:url,
            dataType: "json"}).then(function (features) {
            callback(features);
        },function(){
            callback([]);
        })
    };

    CreateHighlightFilter(layerFeatures,style){
        var filter = new Filter();
        filter.otherDisplay = false;

        for(var layerId in layerFeatures){
            var fs = layerFeatures[layerId];
            var filterLayer = new FilterLayer();
            filterLayer.id = layerId;
            filterLayer.color = style;

            var idFilter = '';
            for(var fid in fs){
                idFilter = idFilter+fid+',';
            }
            if(idFilter.length > 0){
                idFilter = idFilter.substr(0,idFilter.length -1);
                filterLayer.idFilter = idFilter;
            }
            filter.addFilterLayer(filterLayer);
        }
        return filter;
    };


    /**
     * 构造高亮的filter,每个要素都有高亮样式
     * Parameters :
     * layerFeatures - 要素数组
     */
    CreateEveryHighlightFilter(layerFeatures){
        var filter = new Filter();
        filter.otherDisplay = false;

        for(var layerId in layerFeatures){
            var fs = layerFeatures[layerId];
            var layerStyle = fs.style;
            var hasFid = false;
            for(var fid in fs){
                var style = fs[fid].style;
                // style.color = style.color.replace('#','%23');
                var filterLayer = new FilterLayer();
                filterLayer.id = layerId;
                filterLayer.idFilter = fid;
                filterLayer.color = style;
                filter.addFilterLayer(filterLayer);
                hasFid = true;
            }
            if(!hasFid && layerStyle){
                // layerStyle.color = layerStyle.color.replace('#','%23');
                var filterLayer = new FilterLayer();
                filterLayer.id = layerId;
                filterLayer.color = layerStyle;
                filter.addFilterLayer(filterLayer);
            }
        }
        return filter;
    };

    /**
     * 是否为ie浏览器,ie9 除外，ie9无法跨域发送post带数据的请求
     */
    isIE() {
        if (!!window.ActiveXObject || "ActiveXObject" in window){
            //ie9 除外，ie9无法跨域发送post带数据的请求
            var b_version=navigator.appVersion
            var version=b_version.split(";");
            if(version[1]){
                var trim_Version=version[1].replace(/[ ]/g,"");
                if(trim_Version == 'MSIE9.0'){
                    return false;
                }
            }
            return true;
        }
        else
            return false;
    };
}

module.exports = GXYZUtil;


/***/ }),
/* 343 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/6/30.
 */
class Filter{
    constructor(){
        //该值为ture时，后面的layers是全部要显示的，如果为false，后面的layers全部不显示,顶替上面的cmdAll
        this.otherDisplay = true;
        //图层集合
        this.layers = [];
        //里面存放layerName，最终渲染的图层顺序以该图层存放的顺序为准，如果为空数组，则以样式文件中的顺序为准. 注记图层，该属性会被忽略
        this.order = [];
    }


    /**
     * 添加过滤图层
     * Parameters :
     * filterLayer - 过滤图层
     */
    addFilterLayer(filterLayer){
        this.layers.push(filterLayer);
    }

    /**
     * 移除过滤图层
     * Parameters :
     * filterLayerId - 过滤图层ID
     */
    removeFilterLayerById(filterLayerId){
        for(var i = 0;i<this.layers.length;i++){
            if(this.layers[i].id == filterLayerId){
                this.layers.splice(i,1);
            }
        }
    }
}
module.exports = Filter;

/***/ }),
/* 344 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/6/30.
 */
class FilterLayer{
    constructor(){
        //过滤图层的唯一标识
        this.id = null;
        //过滤条件
        this.filters = {};
        //过滤数据的唯一id标识
        this.idFilter = null;
        //过滤字符串,与制图系统中的过滤字符串一致，如果同时也有filters，服务会优先使用filterStr
        this.filterStr = null;
        //是否显示
        this.display = true;
        //高亮对象,默认为null时，使用配图的默认样式。 示例：{"color":"%23f00fff","opacity":0.9}， 其中颜色值必须用%23开头
        this.color = null;
    }

    /**
     * 添加字段过滤条件
     * Parameters :
     * key - 如： Q_fcode_S_EQ，表示fcode等于value的值
     * value - 如：2101010500
     */
    addFilterField(key,value){
        this.filters[key] = value;
    }

    /**
     * 添加字段过滤条件
     * Parameters :
     * key
     */
    removeFilterField(key){
        delete this.filters[key];
    }
}

module.exports = FilterLayer;

/***/ }),
/* 345 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 * 绘制点，线面的工具类
 */
const BoxSet = __webpack_require__(346);
const _boxSet512 = new BoxSet(0,512,0,512,512,5);
const _boxSet256 = new BoxSet(0,256,0,256,256,5);

const GisTools = __webpack_require__(347);
const Util = __webpack_require__(348);
const AvoidUtil = __webpack_require__(349);
class GDrawGeomerty{
    /**
     * 画注记
     * Parameters:
     * features - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static draw(ctx,features,ratio,checkDraw,isChangeFont,hitCtx,hitDetection){
        let drewMap = null;
        if(checkDraw){
            drewMap = new Map();
        }

        for(let i = 0;i<features.length;i++){
            let feature = features[i];
            //画点注记
            if(feature.type == 1){
                this.drawPointIcon(ctx,feature,ratio,drewMap,hitCtx,hitDetection);
                this.drawPoint(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection);
                continue;
            }
            //画线注记
            if(feature.type == 2){
                this.drawLine(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection);
            }
        }
        drewMap = null;
    };

    /**
     * 画默认样式注记
     * Parameters:
     * features - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawDefaultStyle(ctx,features,ratio,checkDraw,isChangeFont,hitCtx,hitDetection){
        let drewMap = null;
        if(checkDraw){
            drewMap = new Map();
        }

        for(let i = 0;i<features.length;i++){
            let feature = features[i];
            //画点注记
            if(feature.type == 1){
                this.drawPointDefaultStyle(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection);
                continue;
            }
            //画线注记
            if(feature.type == 2){
                this.drawLineDefaultStyle(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection);
            }
        }
        drewMap = null;
    };

    /**
     * 画点注记图标
     * Parameters:
     *  ctx - 画布对象
     *  hitCtx - 画拾取box的画布对象
     * hitDetection - 是否绘制拾取的box
     * feature - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawPointIcon(ctx,feature,ratio,drewMap,hitCtx,hitDetection){
        let style = feature.style;
        if(!style.texture){
            return;
        }

        let width = style.graphicWidth;
        let height = style.graphicHeight;


        let img = feature.iconImg;
        if(!img){
            return ;
        }

        if(!width || !height){
            width = img.width;
            height = img.height;
            if(drewMap){
                width = width/ratio;
                height = height/ratio;
            }
        }

        let xOffset =  style.graphicXOffset -0.5 * width;
        let yOffset =  style.graphicYOffset -0.5 * height;

        let pointOffsetX = style.pointOffsetX;
        let pointOffsetY = style.pointOffsetY;
        if(!pointOffsetX){
            pointOffsetX = 0;
        }
        if(!pointOffsetY){
            pointOffsetY = 0;
        }
        let point = [feature.datas[0][0][0],feature.datas[0][0][1]];
        point[0] = point[0]+pointOffsetX;
        point[1] = point[1]+pointOffsetY;

        let x = point[0] + xOffset;
        let y = point[1] + yOffset;
        let opacity = style.pointFillAlpha || 1;

        // 画过的不画
        if(drewMap){
            let drewMark = style.texture + "_" + x + "_" + y;
            if(drewMap.get(drewMark) == null) {
                drewMap.set(drewMark,true);
            }else{
                return;
            }
        }

        ctx.save();
        ctx.globalAlpha = opacity;
        ctx.drawImage(img, x*ratio, y*ratio, width*ratio, height*ratio);
        ctx.restore();

        //拾取检测用的矩形
        if (hitDetection) {
            hitCtx.save();
            this.setHitContextStyle(hitCtx,feature.id);
            hitCtx.fillRect(x,y,width,height);
            hitCtx.restore();
        }
    }

    /**
     * 画点注记
     * Parameters:
     *  ctx - 画布对象
     *  hitCtx - 画拾取box的画布对象
     * hitDetection - 是否绘制拾取的box
     * feature - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawPoint(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection){
        if(!feature.label){
            return;
        }

        let style = feature.style;
        //不在范围内的不绘制
        let pt = style.textPoint;
        if(drewMap){
            //如果这个注记不在渲染格网里面，则不绘制；
            let polyIn = GisTools.boxToPolyArr(feature.box[0],feature.box[1],feature.box[2],feature.box[3]);
            let polyOut;
            if(ctx.canvas.width / ratio == 512){
                polyOut = GisTools.boxToPolyArr(-20,-20,532,532);
            }else if(ctx.canvas.width / ratio == 256){
                polyOut = GisTools.boxToPolyArr(-15,-15,271,271);
            }
            if(GisTools.polyWith(polyOut,polyIn) == 3 ){
                return;
            }

            let drewKey = feature.label + "_" + pt[0] + "_" + pt[1];
            if(drewMap.get(drewKey) == null){
                drewMap.set(drewKey,true);
            }else{
                return;
            }
        }


        let labelRows = feature.label.split(' ');
        let numRows = labelRows.length;
        let lineHeight = style.pointHeight;
        lineHeight =lineHeight +2;

        let pointFillFont = AvoidUtil.formatFont(style.pointFillFont,ratio,isChangeFont);
        let pointStrokeFont = AvoidUtil.formatFont(style.pointStrokeFont,ratio,isChangeFont);

        if(style.pointHashBackground == true){
            ctx.save();
            ctx.globalAlpha = style.pointBackgroundAlpha;
            ctx.strokeStyle = style.pointBackgroundLineColor;
            ctx.lineWidth = style.pointBackgroundLineWidth;
            ctx.fillStyle = style.pointBackgroundColor;
            ctx.font = style.pointFillFont;
            let rectX= pt[0] - style.pointBackgroundGap;
            let rectY = pt[1]-style.pointBackgroundGap - style.pointHeight/2;

            let maxWidth = 0;
            for (let i = 0; i < numRows; i++) {
                let itemWdith = Util.measureText(labelRows[i],ctx.font,ctx);
                if(itemWdith > maxWidth){
                    maxWidth = itemWdith;
                }
            }

            this.drawRoundRect(ctx,rectX,rectY,maxWidth+style.pointBackgroundGap*2,
                style.pointHeight*numRows+style.pointBackgroundGap*2+(numRows-1)*2,style.pointBackgroundRadius,ratio);
            ctx.fill();
            ctx.restore();

            for (let j = 0; j < numRows; j++) {
                if (style.pointHashOutline == true){
                    ctx.save();
                    ctx.textBaseline = "middle";
                    ctx.globalAlpha = style.pointStrokeAlpha;
                    ctx.strokeStyle = style.pointStrokeStyle;
                    ctx.lineWidth = style.pointLineWidth;
                    ctx.font = pointStrokeFont;
                    ctx.strokeText(labelRows[j], pt[0]*ratio, (pt[1]+ (lineHeight * j))*ratio);
                    ctx.restore();
                }

                ctx.save();
                ctx.textBaseline = "middle";
                ctx.globalAlpha = style.pointFillAlpha;
                ctx.fillStyle = style.pointFillStyle;
                ctx.font = pointFillFont;
                ctx.fillText(labelRows[j], pt[0]*ratio, (pt[1] + (lineHeight * j))*ratio);
                ctx.restore();
            }

            //拾取检测用的矩形
            if (hitDetection) {
                hitCtx.save();
                this.setHitContextStyle(hitCtx,feature.id);
                this.drawHitRoundRect(hitCtx,rectX,rectY,maxWidth+style.pointBackgroundGap*2,style.pointHeight+style.pointBackgroundGap*2,style.pointBackgroundRadius);
                hitCtx.fill();
                hitCtx.restore();
            }
        }else{
            let maxWidth = 0;
            for (let i = 0; i < numRows; i++) {
                if (style.pointHashOutline == true) {
                    ctx.save();
                    ctx.textBaseline = "middle";
                    ctx.globalAlpha = style.pointStrokeAlpha;
                    ctx.strokeStyle = style.pointStrokeStyle;
                    ctx.lineWidth = style.pointLineWidth;
                    ctx.font = pointStrokeFont;
                    ctx.strokeText(labelRows[i], pt[0]*ratio, (pt[1]+ (lineHeight * i))*ratio);
                    ctx.restore();
                }

                ctx.save();
                ctx.textBaseline = "middle";
                ctx.globalAlpha = style.pointFillAlpha;
                ctx.fillStyle = style.pointFillStyle;
                ctx.font = pointFillFont;
                ctx.fillText(labelRows[i], pt[0]*ratio, (pt[1]+ (lineHeight * i))*ratio);
                let w  = Util.measureText(labelRows[i],ctx.font,ctx);
                maxWidth = w > maxWidth? w : maxWidth ;
                ctx.restore();
            }


            //拾取检测用的矩形
            if (hitDetection) {
                hitCtx.save();
                this.setHitContextStyle(hitCtx,feature.id);
                hitCtx.textBaseline = "middle";
                hitCtx.fillRect(pt[0],pt[1]- style.pointHeight/2,maxWidth,lineHeight * numRows);
                hitCtx.restore();
            }
        }
    }


    /**
     * 画线注记
     * Parameters:
     *  ctx - 画布对象
     * hitCtx - 画拾取box的画布对象
     * hitDetection - 是否绘制拾取的box
     * feature - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawLine(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection){

        if(feature.lineType == 'text'){
            this.drawLineText(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection);
        }

        if(feature.lineType == 'code'){
            this.drawLineCode(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection);
        }

        if(feature.lineType == 'arrow'){
            this.drawLineArrow(ctx,feature,ratio,drewMap,hitCtx,hitDetection);
        }
    }


    /**
     * 画线文本注记
     * Parameters:
     *  ctx - 画布对象
     * hitCtx - 画拾取box的画布对象
     * hitDetection - 是否绘制拾取的box
     * feature - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawLineText(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection){
        let style = feature.style;
        let label = feature.label;
        let textPoints =  feature.textPoints;

        let lineBoxSet;
        if(drewMap){
            // 如果是512 则使用boxset 512
            if(ctx.canvas.width / ratio == 512){
                lineBoxSet = _boxSet512;
            }else if(ctx.canvas.width / ratio == 256){
                lineBoxSet = _boxSet256;
            }
        }

        let lineFillFont = AvoidUtil.formatFont(style.lineFillFont,ratio,isChangeFont);
        let lineStrokeFont = AvoidUtil.formatFont(style.lineStrokeFont,ratio,isChangeFont);

        //去掉尾部的空格
        //只有一个点，或者是有线背景矩形框
        if(style.lineHashBackground == true || textPoints.length == 1){
            let index = Math.floor(textPoints.length/2);
            let localPoint = textPoints[index][0];
            if(textPoints.length == 1){
                this.drawBgText(ctx,label,ratio,localPoint,style.backgroundAlpha,
                    style.backgroundLineColor,style.backgroundLineWidth,
                    style.backgroundColor,style.lineFillFont,style.lineBackgroundGap,
                    style.lineHeight,style.lineBackgroundRadius,style.lineHashOutline,
                    style.lineStrokeAlpha,style.lineStrokeStyle,style.lineLineWidth,
                    style.lineStrokeFont,style.lineFillAlpha,style.lineFillStyle,
                    hitCtx,hitDetection,feature.id,false,isChangeFont);
            }else{
                this.drawBgText(ctx,label,ratio,localPoint,style.backgroundAlpha,
                    style.backgroundLineColor,style.backgroundLineWidth,
                    style.backgroundColor,style.lineFillFont,style.lineBackgroundGap,
                    style.lineHeight,style.lineBackgroundRadius,style.lineHashOutline,
                    style.lineStrokeAlpha,style.lineStrokeStyle,style.lineLineWidth,
                    style.lineStrokeFont,style.lineFillAlpha,style.lineFillStyle,
                    hitCtx,hitDetection,feature.id,true,isChangeFont);
            }

        }else {
            //开始绘制线注记
            for (let j = 0; j < label.length; j++) {
                let pa = textPoints[j];
                let angle = pa[1];
                let point = pa[0];
                let labelChar = label.charAt(j);

                if(drewMap){
                    let drewKey = labelChar + "_" + point[0] + "_" + point[1] + "_" + angle;
                    if(drewMap.get(drewKey) != null){
                        continue;
                    }
                    drewMap.set(drewKey,true);
                    if(!lineBoxSet.in([point[0] / ratio, point[1] / ratio])){
                        continue;
                    }
                }


                if(style.lineHashOutline == true){
                    ctx.save();
                    ctx.textAlign = "center";
                    ctx.textBaseline = "middle";
                    ctx.globalAlpha = style.lineStrokeAlpha;
                    ctx.strokeStyle = style.lineStrokeStyle;
                    ctx.lineWidth = style.lineLineWidth;
                    ctx.font = lineStrokeFont;
                    ctx.translate(point[0]*ratio, point[1]*ratio);
                    ctx.rotate(angle * Math.PI / 180);
                    ctx.strokeText(labelChar, 0, 0);
                    ctx.restore();
                }

                ctx.save();
                ctx.textAlign = "center";
                ctx.textBaseline = "middle";
                ctx.globalAlpha = style.lineFillAlpha;
                ctx.fillStyle = style.lineFillStyle;
                ctx.font = lineFillFont;
                ctx.translate(point[0]*ratio, point[1]*ratio);
                ctx.rotate(angle * Math.PI / 180);
                ctx.fillText(labelChar, 0, 0);
                ctx.restore();


                //拾取检测用的矩形
                if (hitDetection) {
                    hitCtx.save();
                    this.setHitContextStyle(hitCtx,feature.id);
                    hitCtx.translate(point[0], point[1]);
                    hitCtx.rotate(angle * Math.PI / 180);
                    hitCtx.fillRect(-style.lineHeight*1.2*0.5, -style.lineHeight*1.2*0.5,style.lineHeight*1.2,style.lineHeight*1.2);
                    hitCtx.restore();
                }
            }
        }
    }

    /**
     * 画线编码注记
     * Parameters:
     *  ctx - 画布对象
     * hitCtx - 画拾取box的画布对象
     * hitDetection - 是否绘制拾取的box
     * feature - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawLineCode(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection){
        let style = feature.style;
        let localPoint =  feature.codePoint;
        let codeLabel = feature.label;

        if(style.showRoadCode == true && codeLabel && codeLabel.length > 0){
            this.drawBgText(ctx,codeLabel,ratio,localPoint,style.codeBackgroundAlpha,
                style.codeBackgroundLineColor,style.codeBackgroundLineWidth,
                style.codeBackgroundColor,style.codeLineFillFont,style.codeLineBackgroundGap,
                style.codeLineHeight,style.codeLineBackgroundRadius,style.codeLineHashOutline,
                style.codeLineStrokeAlpha,style.codeLineStrokeStyle,style.codeLineLineWidth,
                style.codeLineStrokeFont,style.codeLineFillAlpha,style.codeLineFillStyle,
                hitCtx,hitDetection,feature.id,true,isChangeFont);
        }
    }

    /**
     * 画线箭头
     * Parameters:
     *  ctx - 画布对象
     * hitCtx - 画拾取box的画布对象
     * hitDetection - 是否绘制拾取的box
     * feature - 设置过样式，转换过为屏幕坐标，避让过的注记数据
     */
    static drawLineArrow(ctx,feature,ratio,drewMap,hitCtx,hitDetection){
        let points = feature.arrowPoint;
        let style = feature.style;
        let p1 = points[0][0];
        let p2 =  points[1][0];
        ctx.save();
        ctx.lineWidth=style.arrowLineWidth;
        ctx.strokeStyle=style.arrowFillStyle;
        ctx.fillStyle=style.arrowFillStyle;
        //画线
        ctx.beginPath();
        ctx.moveTo(p1[0]*ratio,p1[1]*ratio);
        ctx.lineTo(p2[0]*ratio,p2[1]*ratio);
        ctx.stroke();

        let direction = style.arrowDirectionValue;
        if(style.arrowDirectionField){
            direction = feature.attributes[style.arrowDirectionField];
        }

        let startRadians = 0;
        let radians = 0;
        if(p2[0] == p1[0]){
            if((direction && p2[1] > p1[1]) || (!direction && p2[1] < p1[1])){
                startRadians =Math.PI;
            }
        }else{
            startRadians=Math.atan((p2[1]-p1[1])/(p2[0]-p1[0]));
            radians = ((p2[0]>p1[0])?90:-90)*Math.PI/180;
        }

        //画箭头
        if(direction == 0){
            startRadians = startRadians - radians;
            this.drawArrowhead(ctx,p1[0],p1[1],startRadians,ratio,style.arrowSize);
        }else{
            startRadians = startRadians + radians;
            this.drawArrowhead(ctx,p2[0],p2[1],startRadians,ratio,style.arrowSize);
        }
        ctx.restore();
    }

    /**
     * 画箭头的头
     * Parameters:
     */
    static drawArrowhead(ctx,x,y,radians,ratio,size){
        ctx.beginPath();
        ctx.translate(x*ratio,y*ratio);
        ctx.rotate(radians);
        ctx.moveTo(0,-size*ratio);
        ctx.lineTo(size*0.5*ratio,0);
        ctx.lineTo(-size*0.5*ratio,0);
        // ctx.moveTo(0,0);
        // ctx.lineTo(size*0.5*ratio,size*ratio);
        // ctx.lineTo(0,size*ratio);
        // ctx.lineTo(-size*0.5*ratio,size*ratio);
        ctx.closePath();
        ctx.fill();
    }

    /**
     * 画圆角矩形
     */
    static drawRoundRect(ctx, x, y, width, height, radius,ratio){
        ctx.beginPath();
        y = y -1;
        ctx.arc((x + radius)*ratio, (y + radius)*ratio, radius*ratio, Math.PI, Math.PI * 3 / 2);
        ctx.lineTo((width - radius + x)*ratio, y*ratio);
        ctx.arc((width - radius + x)*ratio, (radius + y)*ratio, radius*ratio, Math.PI * 3 / 2, Math.PI * 2);
        ctx.lineTo((width + x)*ratio, (height + y - radius)*ratio);
        ctx.arc((width - radius + x)*ratio, (height - radius + y)*ratio, radius*ratio, 0, Math.PI * 1 / 2);
        ctx.lineTo((radius + x)*ratio, (height +y)*ratio);
        ctx.arc((radius + x)*ratio, (height - radius + y)*ratio, radius*ratio, Math.PI * 1 / 2, Math.PI);
        ctx.closePath();
    }

    /**
     * 绘制带背景的线文本
     */
    static drawBgText(ctx,label,ratio,localPoint,backgroundAlpha,
                          backgroundLineColor,backgroundLineWidth,
                          backgroundColor,lineFillFont,lineBackgroundGap,
                          lineHeight,lineBackgroundRadius,lineHashOutline,
                          lineStrokeAlpha,lineStrokeStyle,lineLineWidth,
                          lineStrokeFont,lineFillAlpha,lineFillStyle,hitCtx,hitDetection,featureId,isDrawbg,isChangeFont){
        localPoint[0] = Math.round(localPoint[0]);
        localPoint[1] = Math.round(localPoint[1]);

        ctx.save();
        ctx.globalAlpha = backgroundAlpha;
        ctx.strokeStyle = backgroundLineColor;
        ctx.lineWidth = backgroundLineWidth;
        ctx.fillStyle = backgroundColor;
        ctx.font = AvoidUtil.formatFont(lineFillFont,1,isChangeFont);
        let w = Util.measureText(label,ctx.font,ctx);
        let rectX= localPoint[0] - w/2-lineBackgroundGap;
        let rectY = localPoint[1]-lineHeight/2-lineBackgroundGap;
        if(isDrawbg){
            this.drawRoundRect(ctx,rectX,rectY,w+lineBackgroundGap*2,lineHeight+lineBackgroundGap*2,lineBackgroundRadius,ratio);
            ctx.fill();
        }
        ctx.restore();


        lineFillFont = AvoidUtil.formatFont(lineFillFont,ratio,isChangeFont);
        lineStrokeFont = AvoidUtil.formatFont(lineStrokeFont,ratio,isChangeFont);
        if(lineHashOutline == true){
            ctx.save();
            ctx.textAlign = "center";
            ctx.textBaseline = "middle";
            ctx.globalAlpha = lineStrokeAlpha;
            ctx.strokeStyle = lineStrokeStyle;
            ctx.lineWidth = lineLineWidth;
            ctx.font = lineStrokeFont;
            ctx.translate(localPoint[0]*ratio, localPoint[1]*ratio);
            ctx.strokeText(label, 0, 0);
            ctx.restore();
        }

        ctx.save();
        ctx.textAlign = "center";
        ctx.textBaseline = "middle";
        ctx.globalAlpha = lineFillAlpha;
        ctx.fillStyle = lineFillStyle;
        ctx.font = lineFillFont;
        ctx.translate(localPoint[0]*ratio, localPoint[1]*ratio);
        ctx.fillText(label, 0, 0);
        ctx.restore();


        //拾取检测用的矩形
        if (hitDetection) {
            hitCtx.save();
            this.setHitContextStyle(hitCtx, featureId);
            this.drawHitRoundRect(hitCtx,rectX,rectY,w+lineBackgroundGap*2,lineHeight+lineBackgroundGap*2,lineBackgroundRadius);
            hitCtx.fill();
            hitCtx.restore();
        }
    }

    /**
     * 绘制点的默认样式
     */
    static drawPointDefaultStyle(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection){
        let style = feature.style;
        let pt = feature.datas[0][0];
        ctx.save();
        ctx.fillStyle = style.pointFillStyle;
        ctx.beginPath();
        ctx.arc(pt[0],pt[1],style.radius,0,2*Math.PI);
        ctx.fill();
        ctx.restore();
    }

    /**
     * 绘制线的默认样式
     */
    static drawLineDefaultStyle(ctx,feature,ratio,drewMap,isChangeFont,hitCtx,hitDetection){
        let style = feature.style;
        let datas = feature.datas;
        ctx.save();
        ctx.lineWidth = style.lineWidth;
        ctx.strokeStyle = style.lineFillStyle;
        ctx.beginPath();
        ctx.moveTo(datas[0][0][0],datas[0][0][1]);
        for(let i = 1;i<datas.length;i++){
            ctx.lineTo(datas[i][0][0],datas[i][0][1]);
        }
        ctx.stroke();
        ctx.restore();
    }

    /**
     * 根据featureId生成颜色值
     */
    static featureIdToHex(featureId) {
        let id = Number(featureId) + 1;
        let hex = "000000" + id.toString(16);
        let len = hex.length;
        hex = "#" + hex.substring(len-6, len);
        return hex;
    }

    static setHitContextStyle(hitCtx,featureId){
        let hex = this.featureIdToHex(featureId);
        hitCtx.globalAlpha = 1;
        hitCtx.fillStyle = hex;
    }

    /**
     * 绘制拾取背景框
     */
    static drawHitRoundRect(hitCtx, x, y, width, height, radius){
        hitCtx.beginPath();
        hitCtx.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);
        hitCtx.lineTo(width - radius + x, y);
        hitCtx.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);
        hitCtx.lineTo(width + x, height + y - radius);
        hitCtx.arc(width - radius + x, height - radius + y, radius, 0, Math.PI * 1 / 2);
        hitCtx.lineTo(radius + x, height +y);
        hitCtx.arc(radius + x, height - radius + y, radius, Math.PI * 1 / 2, Math.PI);
        hitCtx.closePath();
    }
}
module.exports = GDrawGeomerty;

/***/ }),
/* 346 */
/***/ ((module, exports) => {



const _quadrant_left = 1;
const _quadrant_left_bottom = 2;
const _quadrant_bottom = 3;
const _quadrant_right_bottom = 4;
const _quadrant_right = 5;
const _quadrant_right_top = 6;
const _quadrant_top = 7;
const _quadrant_left_top = 8;
const _inner = 9;

const _save = 1;
const _question = 2;
const _out = 3;

class BoxSet {
    constructor(left,right,bottom,top,base,bufferPercent) {
        if (bufferPercent == null) {
            bufferPercent = 5;
        }
        let buffer = base * 5 /100;
        this.left = left - buffer;
        this.right = right + buffer;
        this.bottom = bottom - buffer;
        this.top = top + buffer;
        this.previous = BoxSet.createEmptyDoubleArray();
        this.now = BoxSet.createEmptyDoubleArray();
        this.question = BoxSet.createEmptyDoubleArray();
        this.point_previous_quadrant = -1;
        this.point_now_quadrant = -1;
        this.point_question_quadrant = -1;

    }

    static createEmptyDoubleArray() {
        return [NaN,NaN];
    }

    copy(form ,to){
        to[0] = form[0];
        to[1] = form[1];
    }

    static isEmpty(array){
        if(array == null){
            return true;
        }
        if(isNaN(array[0]) || isNaN(array[1])){
            return true;
        }else{
            return false;
        }
    }

    isQuadrant(point){
        let x = point[0];
        let y = point[1];

        if(x < this.left){
            if(y > this.top){
                return _quadrant_left_top;
            }
            if( y < this.bottom){
                return _quadrant_left_bottom;
            }else{
                return _quadrant_left;
            }
        }
        if(x > this.right){
            if(y > this.top){
                return _quadrant_right_top;
            }
            if(y < this.bottom){
                return _quadrant_right_bottom;
            }else{
                return _quadrant_right;
            }
        }else{
            if(y > this.top){
                return _quadrant_top;
            }
            if(y < this.bottom){
                return _quadrant_bottom;
            }else{
                return _inner;
            }
        }
    }

    passrule(point_previous_quadrant,point_now_quadrant){
        if(point_previous_quadrant == 1){
            if(point_now_quadrant == 1 || point_now_quadrant == 2 || point_now_quadrant == 8){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 2){
            if(point_now_quadrant == 1 || point_now_quadrant == 2 || point_now_quadrant == 8 || point_now_quadrant == 3 || point_now_quadrant == 4){
                return _question;
            }else{
                return _save;
            }
        }
        if(this.point_previous_quadrant == 3){
            if(this.point_now_quadrant == 2 || this.point_now_quadrant == 3 || this.point_now_quadrant == 4){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 4){
            if(point_now_quadrant == 2 || point_now_quadrant == 3 || point_now_quadrant == 4 || point_now_quadrant == 5 || point_now_quadrant == 6){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 5){
            if(point_now_quadrant == 4 || point_now_quadrant == 5 || point_now_quadrant == 6){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 6){
            if(point_now_quadrant == 4 || point_now_quadrant == 5 || point_now_quadrant == 6|| point_now_quadrant == 7|| point_now_quadrant == 8){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 7){
            if(point_now_quadrant == 6 ||point_now_quadrant == 7 || point_now_quadrant == 8){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 8){
            if(point_now_quadrant == 6 || point_now_quadrant == 7 || point_now_quadrant == 8|| point_now_quadrant == 1|| point_now_quadrant == 2){
                return _question;
            }else{
                return _save;
            }
        }
        if(point_previous_quadrant == 9){
            return _save;
        }else{
            return _save;
        }
    }

    reset(){
        this.previous[0] = NaN;
        this.previous[1] = NaN;
        this.question[0] = NaN;
        this.question[1] = NaN;
        this.now[0] = NaN;
        this.now[1] = NaN;
        this.point_previous_quadrant = -1;
        this.point_now_quadrant = -1;
        this.point_question_quadrant = -1;
    }

    in(now){
        if(now[0] <	this.left || now[0] > this.right){
            return false;
        }
        if(now[1] < this.bottom || now[1] > this.top){
            return false;
        }
        return true;
    }


    static length( x0, y0, x1, y1){
        let dx = x1 - x0;
        let dy = y1 - y0;
        let len = Math.sqrt(dx * dx + dy * dy);
        return len;
    }


    push(x, y){

        this.now[0] = x;
        this.now[1] = y;
        if(BoxSet.isEmpty(this.previous)){
            this.copy(this.now, this.previous);
            this.point_previous_quadrant = this.isQuadrant(this.now);
            return [this.now];
        }else{
            this.point_now_quadrant = this.isQuadrant(this.now);
            let passrule = this.passrule(this.point_previous_quadrant,this.point_now_quadrant);
            if(passrule == _save){

                this.point_previous_quadrant = this.isQuadrant(this.now);
                this.copy(this.now, this.previous);
                if(!BoxSet.isEmpty(this.question)){
                    let returnPoint = [];
                    this.copy(this.question,returnPoint);

                    this.question = BoxSet.createEmptyDoubleArray();

                    return [returnPoint,this.now];
                }else{
                    return [this.now];
                }


            }
            if(passrule == _question){
                //如果存疑，则需要和存疑点比对
                if(!BoxSet.isEmpty(this.question)){
                    //point_question_quadrant = this.isQuadrant(question);
                    passrule = this.passrule(this.point_question_quadrant,this.point_now_quadrant);
                    if(passrule == _save){
                        let returnPoint = [];
                        this.copy(this.question,returnPoint);
                        this.question = BoxSet.createEmptyDoubleArray();
                        return [returnPoint,this.now];
                    }
                    if(passrule == _question){

                    }
                }
                this.copy(this.now, this.question);
                this.point_question_quadrant = this.point_now_quadrant;
                return null;
            }else{
                return null;
            }
        }
    }
}
module.exports = exports = BoxSet;


/***/ }),
/* 347 */
/***/ ((module, exports) => {

/**
 * Created by matt on 2017/7/16.
 */
//几个像素可以算是命中
let _dis = 3;

class GisTools {
    static pointDistToLine(x, y, startx, starty, endx, endy) {
        let se = (startx - endx) * (startx - endx) + (starty - endy) * (starty - endy);
        let p = ((x - startx) * (endx - startx) + (y - starty) * (endy - starty));
        let r = p / se;
        let outx = startx + r * (endx - startx);
        let outy = starty + r * (endy - starty);
        let des = Math.sqrt((x - outx) * (x - outx) + (y - outy) * (y - outy));

        //console.log(des);
        return des;
    }
    static isPointOnSegment(px, py, p1x, p1y, p2x, p2y) {

        if ((px - _dis > p1x && px + _dis > p2x) || (px + _dis < p1x && px - _dis < p2x)) {
            return 0;
        }
        if ((py - _dis > p1y && py + _dis > p2y) || (py + _dis < p1y && py - _dis < p2y)) {
            return 0;
        }
        let d = GisTools.pointDistToLine(px, py, p1x, p1y, p2x, p2y);
        if (d < _dis) {
            return 1;
        } else {
            return 0;
        }
    }
    static pointInLine(px, py, polyline) {
        let flag = 0;
        let line = [];
        if (Array.isArray(polyline[0])) {
            line = polyline;
        } else {
            line.push(polyline);
        }
        for (var polyIndex = 0; polyIndex < line.length; polyIndex++) {
            let subpoly = line[polyIndex];
            let length = subpoly.length / 2;
            // for (var i = 0, l = length, j = l - 1; i < l; j = i, i++) {

            for (var i = 0; i < length - 1; i++) {
                let j;
                j = i + 1;
                let sx = subpoly[2 * i],
                    sy = subpoly[2 * i + 1],
                    tx = subpoly[2 * j],
                    ty = subpoly[2 * j + 1]
                if (GisTools.isPointOnSegment(px, py, sx, sy, tx, ty) == 1) {
                    return 1;
                } else {

                }
            }
        }
        return 0;
    }

    /**
     * 判断点是否在面里面(包含在边界上)
     * @param {*} px 经度
     * @param {*} py 维度
     * @param {*} polygen 面 
     * @returns 点是否在面中
     */
    static pointInPolygon(px, py, polygen) {
        let flag = 0;
        let poly = [];
        if (Array.isArray(polygen[0])) {
            poly = polygen;
        } else {
            poly.push(polygen);
        }

        for (var polyIndex = 0; polyIndex < poly.length; polyIndex++) {
            let subpoly = poly[polyIndex];
            let length = subpoly.length / 2;


            for (var i = 0, l = length, j = l - 1; i < l; j = i, i++) {
                let sx = subpoly[2 * i],
                    sy = subpoly[2 * i + 1],
                    tx = subpoly[2 * j],
                    ty = subpoly[2 * j + 1]

                // 点与多边形顶点重合
                if ((sx === px && sy === py) || (tx === px && ty === py)) {
                    return 1
                }

                // 判断线段两端点是否在射线两侧
                if ((sy < py && ty >= py) || (sy >= py && ty < py)) {
                    // 线段上与射线 Y 坐标相同的点的 X 坐标
                    let x = sx + (py - sy) * (tx - sx) / (ty - sy)

                    // 点在多边形的边上
                    if (x === px) {
                        return 1
                    }
                    if (x > px) {
                        flag = !flag
                    }
                }
            }
        }
        return flag ? 1 : 0;

    }

    /**
     * 判断线是否相交
     * @param {number} line1StartX 线1起点X坐标
     * @param {number} line1StartY 线1起点Y坐标
     * @param {number} line1EndX 线1终点X坐标
     * @param {number} line1EndY 线1终点Y坐标
     * @param {number} line2StartX 线2起点X坐标
     * @param {number} line2StartY 线2起点Y坐标
     * @param {number} line2EndX 线2终点X坐标
     * @param {number} line2EndY 线2终点Y坐标
     * @returns 
     */
    static lineIntersects(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY) {
        var denominator,
            a,
            b,
            numerator1,
            numerator2,
            onLine1 = false,
            onLine2 = false,
            res = [null, null];

        denominator = ((line2EndY - line2StartY) * (line1EndX - line1StartX)) - ((line2EndX - line2StartX) * (line1EndY - line1StartY));
        if (denominator === 0) {
            if (res[0] !== null && res[1] !== null) {
                return res;
            } else {
                return false;
            }
        }
        a = line1StartY - line2StartY;
        b = line1StartX - line2StartX;
        numerator1 = ((line2EndX - line2StartX) * a) - ((line2EndY - line2StartY) * b);
        numerator2 = ((line1EndX - line1StartX) * a) - ((line1EndY - line1StartY) * b);
        a = numerator1 / denominator;
        b = numerator2 / denominator;

        // if we cast these lines infinitely in both directions, they intersect here:
        res[0] = line1StartX + (a * (line1EndX - line1StartX));
        res[1] = line1StartY + (a * (line1EndY - line1StartY));


        // if line2 is a segment and line1 is infinite, they intersect if:
        if (b > 0 && b < 1) {
            return res;
        }
        else {
            return false;
        }
    }

    /**
     * 判断两个poly的关系
     * @param polyOut
     * @param polyIn
     * @returns {1,相交，2包涵，3，没关系}
     */
    static polyWith(polyOut, polyIn) {
        let lengthOut = polyOut.length / 2;
        let lengthIn = polyIn.length / 2;
        let flag = false;
        let bY;
        let aX;
        let aY;
        let bX;
        let dY;
        let cX;
        let cY;
        let dX;
        for (let i = 0; i < lengthOut; i++) {

            if (i != lengthOut - 1) {
                aX = polyOut[(i * 2)];
                aY = polyOut[(i * 2 + 1)];
                bX = polyOut[(i * 2 + 2)];
                bY = polyOut[(i * 2 + 3)];
            } else {
                aX = polyOut[(i * 2)];
                aY = polyOut[(i * 2 + 1)];
                bX = polyOut[0];
                bY = polyOut[1];
            }
            for (let j = 0; j < lengthIn; j++) {

                if (j != lengthIn - 1) {
                    cX = polyIn[(j * 2)];
                    cY = polyIn[(j * 2 + 1)];
                    dX = polyIn[(j * 2 + 2)];
                    dY = polyIn[(j * 2 + 3)];
                } else {
                    cX = polyIn[(j * 2)];
                    cY = polyIn[(j * 2 + 1)];
                    dX = polyIn[0];
                    dY = polyIn[1];
                }

                if (GisTools.lineIntersects(aX, aY, bX, bY, cX, cY, dX, dY) != false) {
                    return 1;
                }
            }
        }

        let firstX = polyIn[0];
        let firstY = polyIn[1];
        if (GisTools.pointInPolygon(firstX, firstY, polyOut)) {
            return 2;
        }
        return 3;
    }

    /**
     * 把bbox转成double Array
     * @param left
     * @param bottom
     * @param right
     * @param top
     * @returns {Array}
     */
    static boxToPolyArr(left, bottom, right, top) {
        let arr = [];
        arr.push(left);
        arr.push(bottom);

        arr.push(left);
        arr.push(top);

        arr.push(right);
        arr.push(top);

        arr.push(right);
        arr.push(bottom);

        arr.push(left);
        arr.push(bottom);

        return arr;
    }

    static getExtensionPoint(p1, p2, d) {
        let xab = p2[0] - p1[0];
        let yab = p2[1] - p1[1];
        let xd = p2[0];
        let yd = p2[1];
        if (xab == 0) {
            if (yab > 0) {
                yd = p2[1] + d;
            } else {
                yd = p2[1] - d;
            }
        } else {
            let xbd = Math.sqrt((d * d) / ((yab / xab) * (yab / xab) + 1));
            if (xab < 0) {
                xbd = -xbd
            }

            xd = p2[0] + xbd;
            yd = p2[1] + yab / xab * xbd;
        }
        return [xd, yd];
    }


    /**
     * 线平行偏移
     * @param coords
     * @param distance
     * @returns {Array}
     */
    static lineOffset(coords, distance) {
        let segments = [];
        let finalCoords = [];
        coords.forEach(function (currentCoords, index) {
            if (index !== coords.length - 1) {
                let segment = GisTools.processSegment(currentCoords, coords[index + 1], distance);
                segments.push(segment);
                if (index > 0) {
                    let seg2Coords = segments[index - 1];
                    let intersects = GisTools.lineIntersects(segment[0][0], segment[0][1], segment[1][0], segment[1][1],
                        seg2Coords[0][0], seg2Coords[0][1], seg2Coords[1][0], seg2Coords[1][1]);

                    // Handling for line segments that aren't straight
                    if (intersects !== false) {
                        seg2Coords[1] = intersects;
                        segment[0] = intersects;
                    }

                    finalCoords.push(seg2Coords[0]);
                    if (index === coords.length - 2) {
                        finalCoords.push(segment[0]);
                        finalCoords.push(segment[1]);
                    }
                }
                // Handling for lines that only have 1 segment
                if (coords.length === 2) {
                    finalCoords.push(segment[0]);
                    finalCoords.push(segment[1]);
                }
            }
        });
        return finalCoords;
    }

    /**
     * Process Segment
     * Inspiration taken from http://stackoverflow.com/questions/2825412/draw-a-parallel-line
     *
     * @private
     * @param {Array<number>} point1 Point coordinates
     * @param {Array<number>} point2 Point coordinates
     * @param {number} offset Offset
     * @returns {Array<Array<number>>} offset points
     */
    static processSegment(pointAngle1, pointAngle2, offset) {
        let point1 = pointAngle1[0];
        let point2 = pointAngle2[0];
        let L = Math.sqrt((point1[0] - point2[0]) * (point1[0] - point2[0]) + (point1[1] - point2[1]) * (point1[1] - point2[1]));

        let out1x = point1[0] + offset * (point2[1] - point1[1]) / L;
        let out2x = point2[0] + offset * (point2[1] - point1[1]) / L;
        let out1y = point1[1] + offset * (point1[0] - point2[0]) / L;
        let out2y = point2[1] + offset * (point1[0] - point2[0]) / L;
        return [[[out1x, out1y], pointAngle1[1]], [[out2x, out2y], pointAngle2[1]]];
    }
}
module.exports = exports = GisTools;





/***/ }),
/* 348 */
/***/ ((module) => {

class Util{
    static measureText(label,font,ctx){
        return ctx.measureText(label).width;
    }
}
module.exports = Util;





/***/ }),
/* 349 */
/***/ ((module) => {

class AvoidUtil{
    static getRealLength(str) {
        var length = str.length;
        var realLength = 0
        for (var i = 0; i < length; i++) {
            let charCode = str.charCodeAt(i);
            if (charCode >= 0 && charCode <= 128) {
                realLength += 0.5;
            } else {
                realLength += 1;
            }
        }
        return realLength;
    }

    /**
     * 判断文本是否不为空
     *  Parameters :
     *  label - 要显示的文本
     *
     */
    static isNotNull(label){
        if(!label && label !=0){
            return false;
        }

        //如果是字符串
        if(typeof(label) == 'string'){
            label = label.toLowerCase();
            if(label == ''|| label == 'undefined' || label == 'null'){
                return false;
            }
        }
        return true;
    }

    /**
     * 统一转为微软雅黑
     */
    static formatFont(font,ratio,isChangeFont){
        var fontArr = font;
        if(isChangeFont){
            var farr = font.split(' ');
            farr[farr.length -1] = 'SimHei';
            fontArr =farr.join(' ');
        }

        return fontArr.replace(
            /(\d+\.?\d*)(px|em|rem|pt)/g,
            function(w, m, u) {
                if(m < 12){
                    m = 12 * ratio;
                }else{
                    m = Math.round(m) * ratio;
                }
                return m + u;
            }
        );
    };

    /**
     * 对注记进行去空格等处理
     */
    static formatLabel(label){
        if(label && label.length >0){
            //去掉不可见字符
            label =  label.replace( /([\x00-\x1f\x7f])/g,'');
            label = label.replace(/(\s*$)/g,"");
            label = label.replace(/<br\/>/g, "");
        }
        return label;
    }

    //获取两点连线与y轴的夹角
    static getAngle( p1,p2){
        if(p2[0]-p1[0] == 0){
            if(p2[1]>p1[0]){
                return 90;
            }else{
                return -90;
            }
        }
        let k = (p2[1]-p1[1])/(p2[0]-p1[0]);
        let angle = 360*Math.atan(k)/(2*Math.PI);
        return angle;
    }
}

module.exports = AvoidUtil;





/***/ }),
/* 350 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 * 前端注记避让并绘制layer
 */
const CanvasLayer = __webpack_require__(351);
var GWVTAnno = L.Layer.extend({
    canvasLayer:null,
    currLevel:2,
    //缩放比例
    ratio:1,
    //是否允许拾取
    hitDetection:true,
    options: {
        tileSize:256,
        //图层透明度
        opacity:1
    },
    /**
     * 构造方法
     */
    initialize: function (options) {
        L.setOptions(this, options);
        if(this.options.hasOwnProperty('hitDetection')){
            this.hitDetection = this.options.hitDetection;
        }
        if(window.devicePixelRatio > 1.5){
            this.ratio = 2;
        }
        this.canvasLayer = new CanvasLayer();
        this.canvasLayer.tileSize = this.options.tileSize;
        if(this.options.hasOwnProperty('ableAvoid')){
            this.canvasLayer.ableAvoid = this.options.ableAvoid;
        }
        this.animating = false;
    },

    /**
     * 图层被添加到地图中调用
     */
    onAdd: function () {
        this.canvasLayer.hitDetection = this.hitDetection;
        this.canvasLayer.ratio = this.ratio;

        //地图最大范围
        var maxExtent = this._map.options.crs.projection.bounds;
        this.canvasLayer.init(this._map._size.x,this._map._size.y,this.options.tileSize,this);
        this.canvasLayer.maxExtent = [maxExtent.min.x,maxExtent.min.y,maxExtent.max.x,maxExtent.max.y];
        this._container = this.canvasLayer.root;

        if (this._zoomAnimated) {
            L.DomUtil.addClass(this._container, 'leaflet-zoom-animated');
        }
        this.canvasLayer.root.style.opacity= this.options.opacity;
        this.getPane().appendChild(this.canvasLayer.root);
        this._update();
    },

    setOpacity(opacity){
        this.options.opacity = opacity;
        if(this.canvasLayer.root){
            this.canvasLayer.root.style.opacity= this.options.opacity;
        }
    },

    setAbleAvoid:function(ableAvoid){
        if(this.canvasLayer){
            this.canvasLayer.ableAvoid = ableAvoid;
            this.redraw();
        }
    },

    /**
     * 注册事件
     */
    getEvents: function () {
        var events = {
            resize:this.onResize,
            movestart:this.onMoveStart,
            zoom: this._onZoom,
            moveend: this._onMoveend
        };

        if (this._zoomAnimated) {
            events.zoomanim = this._onAnimZoom;
        }
        return events;
    },

    /**
     * 浏览器窗口缩放事件
     */
    onResize:function(e){
        this.canvasLayer.tileSize = this.options.tileSize;
        this.canvasLayer.gwvtAnno = this;
        this.canvasLayer.initCanvas(this._map._size.x,this._map._size.y);
        this._update();
    },

    _onAnimZoom: function (ev) {
        this.updateTransform(ev.center, ev.zoom);
    },

    _onZoom: function () {
        this.updateTransform(this._map.getCenter(), this._map.getZoom());
    },

    _onMoveend:function(){
        this.animating = false;
        this._update();
    },

    /**
     * 缩放时更新注记层的位置
     */
    updateTransform: function (center,zoom) {
        if(!this._zoom || !this._center){
            this._zoom = this._map.getZoom();
            this._center = this._map.getCenter();
        }

        var scale = this._map.getZoomScale(zoom, this._zoom),
            position = this.getCanvasXY(),
            viewHalf = this._map.getSize().multiplyBy(0.5),
            currentCenterPoint = this._map.project(this._center, zoom),
            destCenterPoint = this._map.project(center, zoom),
            centerOffset = destCenterPoint.subtract(currentCenterPoint),
            topLeftOffset = viewHalf.multiplyBy(-scale).add(position).add(viewHalf).subtract(centerOffset);
        if (L.Browser.any3d) {
            L.DomUtil.setTransform(this.canvasLayer.root, topLeftOffset, scale);
        } else {
            L.DomUtil.setPosition(this.canvasLayer.root, topLeftOffset);
        }
    },

    /**
     * 缩放，平移完成的回调
     */
    onMoveStart:function(){
        this.animating = true;
    },

    /**
     * 缩放，平移完成的回调
     */
    _update: function () {
        var map = this._map;
        if (!map) {
            return;
        }

        //地图当前范围
        var bounds = map.getBounds();
        var pBounds = map.getPixelBounds();

        var east = map.options.crs.projection.project(bounds._northEast);
        var west = map.options.crs.projection.project(bounds._southWest);

        //地图当前分辨率
        var res = (east.y - west.y)/(pBounds.max.y - pBounds.min.y);
        //地图最大范围
        var maxExtent = map.options.crs.projection.bounds;

        //需要请求行列号
        var minRow = Math.floor((maxExtent.max.y - east.y) /(res*this.options.tileSize));
        var maxRow = Math.ceil((maxExtent.max.y - west.y)/(res*this.options.tileSize));
        var minCol = Math.floor((west.x - maxExtent.min.x)/(res*this.options.tileSize));
        var maxCol = Math.ceil((east.x - maxExtent.min.x)/(res*this.options.tileSize));

        var level = map.getZoom();
        var zoomChanged = (this.currLevel != level);
        //发送请求
        var grid = this.getGrid(minRow,maxRow,minCol,maxCol,level);
        this.canvasLayer.extent = [west.x,west.y,east.x,east.y];
        this.canvasLayer.res = res;

        this.canvasLayer.requestLabelTiles(grid,zoomChanged);
        this.currLevel = level;
    },

    /**
     * 根据当前视口获取要请求的瓦片的行列号
     * Parameters (single argument):
     * bounds - 当前视口范围
     * Returns:
     * grid -  当前范围对应的瓦片层行列号
     */
    getGrid:function(minRow,maxRow,minCol,maxCol,level){
        var grid = [];
        for (var col = minCol; col < maxCol; col++) {
            for (var row = minRow; row < maxRow; row++) {
                grid.push({"row":row,"col":col,"level":level});
            }
        }
        return grid;
    },

    /**
     * 当图层缩放，平移后，更新canvas的位置
     * 考虑到它的位置信息存到了map中，不同的map sdk实现机制不一样
     * 所以考虑将该方法提到本类中
     */
    resetCanvasDiv :function(){
        var p = this.getCanvasXY();
        L.DomUtil.setPosition(this._container, p);
        this._center = this._map.getCenter();
        this._zoom = this._map.getZoom();
    },

    /**
     * 获取canvas的坐标
     */
    getCanvasXY:function(){
        var style = this._map.dragging._draggable._element.style;
        var offset;
        if(style.transform){
            offset = style.transform.match(/(-?\d+\.?\d*)(px)/g);
        }else{
            offset = [style.left,style.top];
        }

        var x =offset[0].replace('px','');
        var y =offset[1].replace('px','');
        return {x:-x,y:-y};
    },

    /**
     * 重新绘制注记要素，当动态更改DataSouce数据源后，需要调用redraw方法
     */
    redraw :function(){
        if(this.canvasLayer){
            this.canvasLayer.redraw();
        }
    },

    /**
     * 添加数据源
     * Parameters :
     * dataSource
     */
    addDataSource : function(dataSource){
        this.canvasLayer.addDataSource(dataSource);
    },

    /**
     * 根据dataSoucceId移除数据源
     * Parameters :
     * dataSoucceId
     */
    removeDataSourceById:function(dataSoucceId){
        this.canvasLayer.removeDataSourceById(dataSoucceId);
    },

    onRemove: function (map) {
        L.DomUtil.remove(this.canvasLayer.root);
    },

    addToMap:function(map){
        map.addLayer(this);
    },

    /**
     * 根据屏幕坐标获取feature
     * Parameters :
     * x
     * y
     */
    getFeatureByXY:function(x,y){
        return this.canvasLayer.getFeatureByXY(x,y);
    },

    /**
     * 是否支持isImportant属性，默认值为true
     * Parameters :
     * b
     */
    setHasImportant:function(b){
        if(this.canvasLayer){
            this.canvasLayer.hasImportant = b;
        }
    },

    /**
     * 获取支持isImportant属性，返回true 或者false
     */
    getHasImportant:function(){
        if(this.canvasLayer){
            return this.canvasLayer.hasImportant;
        }else{
            return true;
        }
    },

    CLASS_NAME: "L.GWVTAnno"

});

module.exports = GWVTAnno;

/***/ }),
/* 351 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 */
const Cache = __webpack_require__(352);
const GDrawGeomerty = __webpack_require__(345);
const {getParamJSON} = __webpack_require__(337);
const LabelDrawer = __webpack_require__(353);
const GAnnoAvoid = __webpack_require__(354);
const GCutLine = __webpack_require__(357);
const AvoidUtil =  __webpack_require__(349);
class CanvasLayer{
    constructor() {
        this.width = 0;
        this.height= 0;

        //当前屏幕的瓦片层行列号集合
        this.grid =[];
        this.cache = new Cache(256);
        //注记图层对象
        this.gwvtAnno = null;
        //数据源集合
        this.dataSource = [];
        //如果dataSource是urldatasource,那么样式纹理是否加载完成。 如果只有localDataSource,则为true
        this.isReady = false;

        //地图的最大范围
        this.maxExtent = [];
        //地图的当前视口
        this.extent =[];
        //地图的当前分辨率
        this.res = 0;
        //瓦片大小
        this.tileSize = 256;
        //是否允许拾取
        this.hitDetection = false;
        //当前屏幕内的features
        this.features = [];
        //正在请求中的瓦片请求集合,还没返回的请求
        this.requestingTiles = {};
        // 是否支持有isImportant属性
        this.hasImportant = true;
        //缩放比例
        this.ratio = 1;
        let canvas = document.createElement('CANVAS');
        let ctx =  canvas.getContext('2d',{isQuality:true});
        this.GAnnoAvoid = new GAnnoAvoid(ctx,false);

        // //是否已经设置过全局样式
        // this.isSetGlobalStyle = false;
        //全局是否开启避让
        this.ableAvoid = true;
        //全局是否开启权重排序
        this.ableWeight = true;
    }

    /**
     * 初始化
     */
    init(w,h,tileSize,gwvtAnno){
        this.tileSize = tileSize;
        this.gwvtAnno = gwvtAnno;
        this.initCanvas(w,h);
        this.loadResources();
    };

    /**
     * 加载dataSource的样式文件和纹理，所有dataSource的
     * 样式文件和纹理加载完成，则isReady设置为ture
     */
    loadResources(){
        if(this.dataSource.length == 0){
            this.isReady = false;
            return;
        }

        this.cache.clean();
        this.requestingTiles = {};
        let reqArr = [];
        for(let i = 0;i<this.dataSource.length;i++){
            let ds = this.dataSource[i];
            if(ds.type == 'URLDataSource'){
                reqArr = reqArr.concat(ds.loadStyle());
            }
            if(ds.type == 'LocalDataSource'){
                reqArr = reqArr.concat(ds.loadTexture());
            }
        }

        if(reqArr.length > 0){
            Promise.all(reqArr).then(function(){
                this.isReady = true;
                //重新请求注记数据
                if(this.grid.length > 0){
                    this.requestLabelTiles(this.grid);
                }
            }.bind(this));
        }else{
            this.isReady = true;
        }
    };

    /**
     * 初始化画布
     * Parameters :
     * w - 图层宽
     * h - 图层高
     */
    initCanvas(w,h){
        this.width = w;
        this.height= h;
        if(!this.root){
            this.root = document.createElement("canvas");
        }
        this.root.style.width = this.width + "px";
        this.root.style.height = this.height + "px";
        this.root.width = this.width*this.ratio;
        this.root.height = this.height*this.ratio;
        this.root.id = 'labelCanvas';
        this.canvas = this.root.getContext("2d",{isQuality:true});


        if (this.hitDetection) {
            if(!this.hitCanvas){
                this.hitCanvas = document.createElement("canvas");
            }
            this.hitCanvas.style.width = this.width + "px";
            this.hitCanvas.style.height = this.height + "px";
            this.hitCanvas.width = this.width;
            this.hitCanvas.height = this.height;
            this.hitContext = this.hitCanvas.getContext("2d",{isQuality:true});
        }
    };


    /**
     * 添加数据源
     * Parameters :
     * dataSource
     */
    addDataSource(dataSource){
        if(dataSource.type =='URLDataSource'){
            dataSource.url = dataSource.url + '&tilesize='+this.tileSize;
        }

        if(dataSource.type =='URLDataSource' || dataSource.type =='LocalDataSource'){
            this.dataSource.push(dataSource);
        }
    };

    /**
     * 根据dataSoucceId移除数据源
     * Parameters :
     * dataSoucceId
     */
    removeDataSourceById(dataSoucceId){
        for(let i = 0;i<this.dataSource.length;i++){
            if(this.dataSource[i].id == dataSoucceId){
                this.dataSource.splice(i,1);
                return;
            }
        }
    };

    /**
     * 根据dataSoucceId获取数据源
     * Parameters :
     * dataSoucceId
     */
    getDataSourceById(dataSoucceId){
        for(let i = 0;i<this.dataSource.length;i++){
            if(this.dataSource[i].id == dataSoucceId){
                return this.dataSource[i];
            }
        }
    };

    /**
     * 清空画布
     */
    clean(){
        this.canvas.clearRect(0, 0, this.width*this.ratio, this.height*this.ratio);
        if(this.hitContext){
            this.hitContext.clearRect(0, 0, this.width, this.height);
        }
    };

    /**
     * 重新绘制注记要素，当动态更改DataSouce数据源后，需要调用redraw方法
     */
    redraw(){
        if(this.grid.length == 0){
            return;
        }
        //重新加载样式，纹理文件
        this.loadResources();
    };

    /**
     * 请求注记瓦片
     * Parameters :
     * grid - 当前视口内，瓦片的层行列号集合
     * zoomChanged - 是否进行了缩放操作
     */
    requestLabelTiles(grid,zoomChanged){
        this.grid = grid;
        //如果数据源没有准备好
        if(!this.isReady){
            return;
        }

        //获取需要请求的url
        let requestTileUrls = this.getRequestTileUrls(grid);
        this.sendRequest(requestTileUrls);
    };

    /**
     * 获取localDataSource中在当前屏幕范围内的注记要素
     */
    getLocalLabelDatas(){
        let localFeatures = [];
        for(let i = 0;i<this.dataSource.length;i++){
            let ds = this.dataSource[i];
            if(ds.type == 'LocalDataSource'){
                for(let j = 0;j<ds.features.length;j++){
                    let feature = ds.features[j];
                    if(feature.latlngData.length == 0){
                        feature.latlngData = feature.sourceData;
                        feature.weight = feature.style.avoidWeight;
                    }

                    //找出在当前视口内的要素
                    if(feature.inBounds(this.extent)){
                        feature.attributeId = feature.attributes['attributeId'];
                        feature.primaryId = feature.attributeId;

                        if(feature.type == 1){
                            //转换要素的地理坐标为屏幕坐标
                            // feature.sourceAngleData = [[feature.sourceData,0]];
                            let datas = feature.transformData(this.extent,this.res);
                            feature.datas = [[datas,0]];
                            feature.label = feature.getFeatureLabel();
                            // feature.textures = ds.textures;
                            feature.iconImg =ds.textures[feature.style.texture];
                            localFeatures.push(feature);
                        }

                        if(feature.type == 2){
                            feature.label = feature.getFeatureLabel();
                            feature.sourceData =  feature.transformData(this.extent,this.res);
                            feature.textures = ds.textures;
                            localFeatures = localFeatures.concat(this.cutLineFeature(feature,true));
                        }
                    }
                }
            }
        }

        return localFeatures;
    };

    /**
     * 计算需要请求的瓦片的url
     * Parameters :
     * requestTiles - 需要请求的瓦片层行列号集合
     */
    getRequestTileUrls(grid){
        this.hitCacheUrls = [];
        this.currentTileDatas = [];
        this.defaultStyeTileDatas = [];
        //本次需要请求的url
        let requestTileUrls = {};
        //请求队列中找到的url集合
        let findedRequestUrls ={};
        for(let i = 0;i<this.dataSource.length;i++){
            let dataSource = this.dataSource[i];
            //url数据源
            if(dataSource.type == 'URLDataSource'){
                let url = dataSource.url;
                for(let j = 0;j<grid.length;j++){
                    let item = grid[j];
                    let tileUrl  = url.replace('${x}',item.col).replace('{x}',item.col);
                    tileUrl = tileUrl.replace('${y}',item.row).replace('{y}',item.row);
                    tileUrl = tileUrl.replace('${z}',item.level).replace('{z}',item.level);

                    //多域名url
                    if(dataSource.urlArray.length > 0){
                        let len = dataSource.urlArray.length-1;
                        let index = Math.round(Math.random()*len);
                        let domainUrl = dataSource.urlArray[index];

                        let array = tileUrl.split('/mapserver');
                        let partUrl = array[1];
                        tileUrl = domainUrl + '/mapserver'+partUrl;
                    }

                    //判断缓存中有没有该注记
                    let cacheItem = this.cache.getItem(tileUrl);
                    if(cacheItem){
                        this.hitCacheUrls.push({url:tileUrl,isDefaultStyle:dataSource.styleId == '_default__'});
                    }else{
                        //已经发送的请求队列中找,队列中没找到的需要发送请求
                        if(!this.requestingTiles[tileUrl]){
                            requestTileUrls[tileUrl] = {url:tileUrl,xyz:item,dataSourceId:dataSource.id,dataType:'json'};
                        }else{
                            findedRequestUrls[tileUrl] = true;
                        }
                    }
                }
            }
        }

        // console.log('total count  ================='+ grid.length);
        //关闭上次不需要的请求
        this.cancelRequest(findedRequestUrls);
        return requestTileUrls;
    };

    /**
     * 取消上次不需要的请求
     * Parameters :
     * findedRequestUrls - 请求队列中找到的url集合
     */
    cancelRequest(findedRequestUrls){
        for(let tileUrl in this.requestingTiles) {
            if (!findedRequestUrls[tileUrl]) {
                let requestTile = this.requestingTiles[tileUrl];
                delete this.requestingTiles[tileUrl];
                requestTile.xhr.abort();
                requestTile.requestItem.cancel = true;
            }
        }
    };

    /**
     * 发送请求，取注记瓦片数据
     * Parameters :
     * requestTileUrls - 需要请求的瓦片url集合
     */
    sendRequest(requestTileUrls){
        let count = 0;
        for(let url in requestTileUrls){
            let item = requestTileUrls[url];
            let promise = getParamJSON(item);
            this.requestingTiles[item.url] = {xhr:promise.xhr,requestItem:item};
            promise.then(this.tileSuccessFunction.bind(this),this.tileFailFunction.bind(this));
            count++;
        }
        // console.log('sendRequest count ==============='+count);
        if(count == 0){
            this.sendSuccess([],[]);
        }
    };

    /**
     * 单个瓦片注记请求成功的回调
     */
    tileSuccessFunction(data){
        if(data.param.cancel == true || this.isEmptyObject(this.requestingTiles)){
            //请求取消失败的，或者图层重绘的请求直接返回
            return;
        }

        let url = data.param.url;

        //删除正在请求的url
        delete this.requestingTiles[url];
        let features = this.parseFeature(data);
        if(features.styleId == '_default__'){
            this.defaultStyeTileDatas.push({url:url,labelFeatures:features.labelFeatures,avoidLineFeatures:features.avoidLineFeatures});
        }else{
            //设置boxs
            let labelFeatures = this.GAnnoAvoid.GLabelBox.setBox(features.labelFeatures,true);
            labelFeatures = this.GAnnoAvoid.avoid(labelFeatures,features.avoidLineFeatures);
            this.currentTileDatas.push({url:url,labelFeatures:labelFeatures,avoidLineFeatures:features.avoidLineFeatures});
        }

        //如果所有的瓦片请求成功
        if(this.isEmptyObject(this.requestingTiles)){
            this.sendSuccess(this.currentTileDatas,this.defaultStyeTileDatas);
        }
    };

    //判断map是否为空
    isEmptyObject(e) {
        for (let t in e)
            return !1;
        return !0
    };

    /**
     * 单个瓦片注记请求失败的回调
     */
    tileFailFunction(data){
        if(data.param.cancel == true || this.isEmptyObject(this.requestingTiles)){
            //请求取消失败的，或者图层重绘的请求直接返回
            return;
        }

        let url = data.param.url;
        delete this.requestingTiles[url];

        //如果所有的瓦片请求成功
        if(this.isEmptyObject(this.requestingTiles)){
            this.sendSuccess(this.currentTileDatas,this.defaultStyeTileDatas);
        }
    };


    /**
     * 请求成功的回调函数，没有请求url，也会执行该回调
     * Parameters :
     * results - 请求成功的结果
     */
    sendSuccess(results,defaultStyleResult){
        if(this.gwvtAnno.animating){
            return;
        }
        //重置图层位置
        this.gwvtAnno.resetCanvasDiv();
        this.clean();
        //保证当前屏幕内需要拾取的要素
        if(this.hitDetection){
            this.features = [];
        }

        this.drawLabel(results);
        this.drawDefaultStyleLabel(defaultStyleResult);
    };


    /**
     * 合并本地注记，绘制注记 (默认样式的注记)
     * Parameters :
     * results - 请求成功的结果
     */
    drawDefaultStyleLabel(results){
        //合并上次在当前视口范围内的注记要素(不包括本地要素)
        let mergeFeatures = this.mergeLabelData(results,this.hitCacheUrls,true);
        let labelFeatures = mergeFeatures.labelFeatures;

        for(let i = 0;i<results.length;i++){
            let item = results[i];
            this.cache.push(item.url,item);
        }

        //保证当前屏幕内需要拾取的要素
        if(this.hitDetection){
            for(let i = 0;i<labelFeatures.length;i++) {
                let feature = labelFeatures[i];
                this.features[feature.id] = feature;
            }
        }

        //绘制注记要素
        GDrawGeomerty.drawDefaultStyle(this.canvas,labelFeatures,this.ratio,false,false,this.hitContext, this.hitDetection);
    }


    /**
     * 合并本地注记，注记避让，绘制注记
     * Parameters :
     * results - 请求成功的结果
     */
    drawLabel(results){
        //合并上次在当前视口范围内的注记要素(不包括本地要素)
        let mergeFeatures = this.mergeLabelData(results,this.hitCacheUrls,false);
        let labelFeatures = mergeFeatures.labelFeatures;

        for(let i = 0;i<results.length;i++){
            let item = results[i];
            this.cache.push(item.url,item);
        }

        //获取localDataSource中在当前屏幕范围内的注记要素
        let localFeatures = this.getLocalLabelDatas();
        labelFeatures = labelFeatures.concat(localFeatures);
        // console.time('avoid time:');

        let avoidlabelDatas = null;
        if(this.ableAvoid){
            avoidlabelDatas = this.GAnnoAvoid.defaultAvoid(labelFeatures,this.hasImportant,this.ableWeight);
        }else{
            avoidlabelDatas = this.GAnnoAvoid.GLabelBox.setBox(labelFeatures,false);
        }
        // console.timeEnd('avoid time:');

        // this.drawAvoidLine(mergeFeatures.avoidLineFeatures);
        //保证当前屏幕内需要拾取的要素
        if(this.hitDetection){
            for(let i = 0;i<avoidlabelDatas.length;i++) {
                let feature = avoidlabelDatas[i];
                this.features[feature.id] = feature;
            }
        }
        //绘制注记要素
        GDrawGeomerty.draw(this.canvas,avoidlabelDatas,this.ratio,false,false,this.hitContext, this.hitDetection);
    }


    drawAvoidLine(avoidLineFeatures){
        this.canvas.save();
        this.canvas.beginPath();
        for(let i =0;i<avoidLineFeatures.length;i++){
            let avoidLineFeature = avoidLineFeatures[i];
            this.canvas.lineWidth=1;
            this.canvas.strokeStyle="#fff000";
            //画线
            this.canvas.moveTo(avoidLineFeature.datas[0],avoidLineFeature.datas[1]);
            for(j = 1;j<avoidLineFeature.datas.length/2;j++){
                this.canvas.lineTo(avoidLineFeature.datas[j*2],avoidLineFeature.datas[j*2+1]);
            }
        }
        this.canvas.stroke();
        this.canvas.restore();
    };

    /**
     * 解析返回的注记信息
     * Parameters:
     * tileData - 请求返回的注记数据
     * Returns:
     * labelDatas - 设置过样式,坐标由瓦片内坐标转为屏幕坐标的注记数据
     */
    parseFeature(tileData){
        let layers = tileData.data;
        let xyz = tileData.param.xyz;
        let count = 0;
        for(let key in layers){
            let layerData = layers[key];
            layerData.xyz = xyz;
            count++;
        }

        let dataSourceId = tileData.param.dataSourceId;

        let labelFeatures = [];
        let dataSource = this.getDataSourceById(dataSourceId);
        if(count > 0 &&  dataSource && dataSource.styleFun){
            //设置样式
            let itemDatas = [];
            let level = tileData.param.xyz.level;
            let drawer = new LabelDrawer(layers,level,itemDatas);
            dataSource.styleFun.call({}, drawer,level);

            //如果没设置过全局样式
            // if(!this.isSetGlobalStyle){
            //     if(drawer.globalStyle){
            //         //设置全局样式
            //         this.setGlobalStyle(drawer.globalStyle);
            //         this.isSetGlobalStyle = true;
            //     }
            // }

            //转换瓦片坐标为屏幕坐标,并构造label数据
            for(let j = 0;j<itemDatas.length;j++){
                let itemData =  itemDatas[j];
                itemData.textures = dataSource.textures;
                labelFeatures = labelFeatures.concat(this.parseItemData(itemData));
            }
        }

        let avoidLineFeatures = this.parseAvoidLine(layers['_layerAvoids'],xyz);
        return {styleId:dataSource.styleId,labelFeatures:labelFeatures,avoidLineFeatures:avoidLineFeatures};
    };

    setGlobalStyle(globalStyle){
        this.ableAvoid =!globalStyle.disableAvoid;
        this.ableWeight = !globalStyle.disableWeight;
        this.GAnnoAvoid.GLabelBox.boxDistance = globalStyle.boxDistance;
    }


    /**
     * 解析图元线要素
     * Parameters:
     * layerAvoids - 需要避让的线图层数据
     * xyz - 层行列号对象
     * Returns:
     * avoidLineFeatures - 需要避让的线要素
     */
    parseAvoidLine(layerAvoids,xyz){
        let avoidLineFeatures = [];
        for(let weight in layerAvoids){
            let lines = layerAvoids[weight];
            weight = parseInt(weight);
            for(let i = 0;i<lines.length;i++){
                let feature = {};
                feature.weight = weight;
                feature.sourceDatas = lines[i];
                feature.datas = this.transformAvoidLine(lines[i],xyz);
                feature.xyz =xyz;
                avoidLineFeatures.push(feature);
            }
        }
        return avoidLineFeatures;
    };



    /**
     * 将瓦片内坐标转换为当前屏幕坐标
     * Parameters:
     * line - 原始的需要避让的线
     * xyz - 瓦片的层行列号
     * Returns:
     * rdata - 本地屏幕内坐标数组
     */
    transformAvoidLine(line,xyz){
        //取出当前视口左上角的地理坐标
        let left = this.extent[0];
        let top = this.extent[3];

        //地图最大的范围
        let mLeft = this.maxExtent[0];
        let mTop = this.maxExtent[3];

        //计算坐上角的屏幕坐标
        let x = (left - mLeft) / this.res;
        let y = (mTop - top) / this.res;

        let newLine = [];

        for(let i = 0;i<line.length/2;i++){
            let px = line[2*i];
            let py = line[2*i+1];
            let gx = px + xyz.col * this.tileSize;
            let gy = py + xyz.row * this.tileSize;
            newLine.push(gx-x);
            newLine.push(gy-y);
        }
        return newLine;
    };


    /**
     * 将注记几何数据转换为相对本地的屏幕坐标
     * Parameters:
     * itemData - 瓦片内坐标的注记数据
     * Returns:
     * labelDatas - 设置过样式,坐标由瓦片内坐标转为屏幕坐标的注记数据
     */
    parseItemData(itemData){
        let labelDatas = [];
        //点
        if(itemData.type == 1){
            labelDatas =  this.parsePoint(itemData);
        }
        //线
        if(itemData.type == 2){
            if(itemData[0] =='LINESTRING'){
                labelDatas = labelDatas.concat(this.parseLine(itemData));
            }
            //多线
            if(itemData[0] =='MULTILINESTRING'){
                labelDatas = labelDatas.concat(this.parseMultiLine(itemData,itemData[2][0][0]));
            }
        }
        return labelDatas;
    };

    /**
     * 将点注记几何数据转换为相对本地的屏幕坐标
     * Parameters:
     * itemData - 瓦片内坐标的注记数据
     * Returns:
     * points - 设置过样式,坐标由瓦片内坐标转为屏幕坐标的注记数据
     */
    parsePoint(itemData){
        let points = [];
        let point = itemData[2];
        let sourceAngleData = [[point,0]];
        let p = this.transformData(sourceAngleData,itemData.xyz);
        let style = itemData.style;
        let label = itemData.fieldValueMap[style.labelfield];
        //去掉尾部的空格
        label = AvoidUtil.formatLabel(label);

        let primaryId = itemData.fieldValueMap['attributeId']+ '_row_'+itemData.xyz.row+'_col_'+itemData.xyz.col+'_level_'+itemData.xyz.level+'_x_'+sourceAngleData[0][0][0]+'_y_'+sourceAngleData[0][0][1];
        let weight = 0;
        if(itemData.fieldValueMap[style.avoidField]){
            weight = parseInt(itemData.fieldValueMap[style.avoidField]);
            if(isNaN(weight)){
                weight = 0;
            }
        }

        let directions = {0:1};
        if(style.texture){
            directions = {0:1,1:1,2:1,3:1};
        }

        points.push({id:Math.round(Math.random()*256*256*256),type:itemData.type,datas:p,sourceData:point,sourceAngleData:sourceAngleData,label:label,attributes:itemData.fieldValueMap,
            attributeId:itemData.fieldValueMap['attributeId'],primaryId:primaryId,style:style,iconImg:itemData.textures[style.texture],xyz:itemData.xyz,weight:weight,
            directions:directions,layerName:itemData.layerName});
        return points;
    };

    /**
     * 将线注记几何数据转换为相对本地的屏幕坐标
     * Parameters:
     * itemData - 瓦片内坐标的注记数据
     * Returns:
     * lines - 设置过样式,坐标由瓦片内坐标转为屏幕坐标的注记数据
     */
    parseLine(itemData){
        if(itemData[2].length == 0){
            return [];
        }

        let lines = [];
        this.processLineString(lines,itemData,itemData[2]);
        return lines;
    };


    /**
     *  递归解析线数据
     * @param lines
     * @param components
     */
    processLineString(lines,itemData,components){
        if (Array.isArray(components[0])) {
            let len = components.length;
            for (let i = 0; i < len; i++) {
                let component = components[i];
                this.processLineString(lines,itemData,component);
            }
        } else {
            let ls = this.parseMultiLine(itemData,components);
            for(let i =0;i<ls.length;i++){
                lines.push(ls[i]);
            }
        }
    }


    /**
     * 将多线注记几何数据转换为相对本地的屏幕坐标
     * Parameters:
     * itemData - 瓦片内坐标的注记数据
     * Returns:
     * multiLines - 设置过样式,坐标由瓦片内坐标转为屏幕坐标的注记数据
     */
    parseMultiLine(itemData,datas){
        let multiLines = [];
        let style = itemData.style;

        let label = itemData.fieldValueMap[style.labelfield];
        let roadCodeLabel = itemData.fieldValueMap[style.roadCodeLabel];
        //去掉尾部的空格
        label = AvoidUtil.formatLabel(label);
        //去掉尾部的空格
        roadCodeLabel = AvoidUtil.formatLabel(roadCodeLabel);

        let weight = 0;
        if(itemData.fieldValueMap[style.avoidField]){
            weight = parseInt(itemData.fieldValueMap[style.avoidField]);
        }

        let feature = {type:itemData.type,sourceData:datas,label:label,weight:weight,roadCodeLabel:roadCodeLabel,attributes:itemData.fieldValueMap,
            attributeId:itemData.fieldValueMap['attributeId'],style:this.cloneStyle(style),textures:itemData.textures,xyz:itemData.xyz,
            layerName:itemData.layerName};
        multiLines = multiLines.concat(this.cutLineFeature(feature,false));
        return multiLines;
    };

    /**
     * 克隆样式
     * @param style
     * @returns {{}}
     */
    cloneStyle(style){
        let newStyle = {};
        for(let name in style){
            newStyle[name] = style[name];
        }
        return newStyle;
    }

    /**
     * 将线切多段，分为线文字，线编码，线箭头,并转换为屏幕坐标
     * Parameters:
     * feature - 瓦片内坐标的注记数据
     * isLocal - true为本地Feature,false为远程请求的feature
     * Returns:
     * features - 切好的线文字，线编码，线箭头要素集合
     */
    cutLineFeature(feature,isLocal){
        if(feature.style.type =='_default__'){
            feature.sourceAngleData = this.lineToSourceAngleData(feature.sourceData);
            feature.datas = this.transformData(feature.sourceAngleData,feature.xyz);
            return [feature];
        }

        let features = GCutLine.cutLineFeature(feature);
        for(let i = 0;i<features.length;i++){
            let f = features[i];
            //转换为屏幕坐标
            if(isLocal){
                f.datas = f.sourceAngleData;
            }else{
                f.datas = this.transformData(f.sourceAngleData,f.xyz);
                f.primaryId = f.attributeId+ '_row_'+feature.xyz.row+'_col_'+feature.xyz.col+'_level_'+feature.xyz.level
                    +'_x_'+f.sourceAngleData[0][0][0]+'_y_'+f.sourceAngleData[0][0][1];
            }


            //用于拾取的id
            f.id = Math.round(Math.random()*256*256*256);

            f.layerName = feature.layerName;
            //获取注记的中心点
            if(f.lineType == 'text'){
                let centerIndex = Math.floor(f.datas.length/2);
                f.centerPoint = f.datas[centerIndex][0];
            }

            //获取注记的中心点
            if(f.lineType == 'code'){
                f.centerPoint = f.datas[0][0];
            }
        }
        return features;
    };

    /**
     * 将瓦片内坐标转换为当前屏幕坐标
     * Parameters:
     * points - 瓦片内坐标数组,item示例：[[12,20],0] [12,20]为点坐标，0为旋转的角度
     * xyz - 瓦片的层行列号
     * Returns:
     * rdata - 本地屏幕内坐标数组
     */
    transformData(points,xyz){
        //取出当前视口左上角的地理坐标
        let left = this.extent[0];
        let top = this.extent[3];

        //地图最大的范围
        let mLeft = this.maxExtent[0];
        let mTop = this.maxExtent[3];

        //计算坐上角的屏幕坐标
        let x = (left - mLeft) / this.res;
        let y = (mTop - top) / this.res;

        let rPoint = [];

        for(let i = 0;i<points.length;i++){
            let point = points[i][0];
            let gx = point[0] + xyz.col * this.tileSize;
            let gy = point[1] + xyz.row * this.tileSize;
            let p = [gx - x,gy - y];
            rPoint.push([p,points[i][1]]);
        }
        return rPoint;
    };

    /**
     * 将线注记原始坐标带点和角度的格式，和切过的线的格式一致（针对默认样式的线主机）
     * Parameters:
     * line - 线注记原始数据
     * Returns:
     */
    lineToSourceAngleData(line){
        let sourceAngleData = [];
        for(let i =0;i<line.length;i++){
            let x = line[i];
            let y = line[i+1];
            sourceAngleData.push([[x,y],0]);
            i++;
        }
        return sourceAngleData;
    };

    /**
     * 将本次请求的注记数据和上次在本视口范围内的要素合并
     * Returns:
     * labelDatas - 合并后的注记数据，当前视口整个屏幕的数据
     */
    mergeLabelData(results,hitCacheUrls,isDefaultStyle){
        let labelFeatures = [];
        let avoidLineFeatures = [];
        for(let j = 0;j<results.length;j++){
            let result = results[j];
            labelFeatures = labelFeatures.concat(result.labelFeatures);
            avoidLineFeatures = avoidLineFeatures.concat(result.avoidLineFeatures);
        }

        let urls = [];
        for(let m =0;m<hitCacheUrls.length;m++){
            let item = hitCacheUrls[m];
            if(item.isDefaultStyle == isDefaultStyle){
                urls.push(item.url);
            }
        }


        for(let i =0 ;i<urls.length;i++){
            let cacheLabelFeatures = this.cache.getItem(urls[i]).labelFeatures;
            for(let j =0;j<cacheLabelFeatures.length;j++){
                let labelFeature = cacheLabelFeatures[j];
                //重新计算当前屏幕坐标
                labelFeature.datas = this.transformData(labelFeature.sourceAngleData,labelFeature.xyz);

                //获取注记的中心点
                if(labelFeature.lineType == 'text'){
                    let centerIndex = Math.floor(labelFeature.datas.length/2);
                    labelFeature.centerPoint = labelFeature.datas[centerIndex][0];
                }

                //获取注记的中心点
                if(labelFeature.lineType == 'code'){
                    labelFeature.centerPoint = labelFeature.datas[0][0];
                }
            }
            labelFeatures = labelFeatures.concat(cacheLabelFeatures);



            let cacheAvoidLineFeatures = this.cache.getItem(urls[i]).avoidLineFeatures;
            for(let j =0;j<cacheAvoidLineFeatures.length;j++){
                let avoidLineFeature = cacheAvoidLineFeatures[j];
                //重新计算当前屏幕坐标
                avoidLineFeature.datas = this.transformAvoidLine(avoidLineFeature.sourceDatas,avoidLineFeature.xyz);
            }
            avoidLineFeatures = avoidLineFeatures.concat(cacheAvoidLineFeatures);
        }


        // console.log('merge cache count =============='+count );
        return {labelFeatures:labelFeatures,avoidLineFeatures:avoidLineFeatures};
    };


    /**
     * 根据屏幕坐标获取feature
     * Parameters :
     * x
     * y
     */
    getFeatureByXY(x,y) {
        let feature = null;
        if (this.hitDetection) {
            let featureId;
            let data = this.hitContext.getImageData(x, y, 1, 1).data;
            if (data[3] === 255) { // antialiased
                let id = data[2] + (256 * (data[1] + (256 * data[0])));
                if (id) {
                    featureId = id - 1 ;
                    try {
                        feature = this.features[featureId];
                    } catch(err) {
                    }
                }
            }
        }
        return feature;
    }
}
module.exports = CanvasLayer;


/***/ }),
/* 352 */
/***/ ((module) => {

/**
 * Created by kongjian on 2018/6/12.
 * 注记瓦片队列缓存工具类
 */
class Cache{
    constructor(size) {
        this.size = size;
        this.map = {};
        this.list = [];
    }

    //往缓存中加入数据
    push(key,item){
        if(this.list.length>this.size-1){
            var removeKey = this.list.shift();
            delete this.map[removeKey];
        }
        this.list.push(key);
        this.map[key] = item;
    }

    //获取缓存数据
    getItem(key){
        return this.map[key];
    }

    //清空缓存
    clean(){
        this.map = {};
        this.list = [];
    }

    //获取缓存的长度
    length(){
        return this.list.length;
    }
}

module.exports = Cache;


/***/ }),
/* 353 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/5/1.
 */
class LabelDrawer{
    constructor(layerDataMap,level,features) {
        this.layerDataMap = layerDataMap;
        this.level = level;
        this.features = features;
    }

    getLayer(layername){
        this.labelDatas = [];

        // let data = this.layerDataMap[layername];
        // if(data == null || data.features == null){
        //     return this;
        // }
        //
        // for(let j=0;j<data.features.length;j++){
        //     let labelData = data.features[j];
        //     labelData.layerName = layername;
        //     labelData.xyz = data.xyz;
        //     labelData.type = data.type;
        //     if(!labelData.fieldValueMap){
        //         labelData.fieldValueMap = this.getFieldValueMap(data,labelData);
        //     }
        //     this.labelDatas.push(labelData);
        // }
        this.setItemLayer(layername);
        return this;
    }

    getAllLayer(){
        this.labelDatas = [];
        for(let layername in this.layerDataMap){
            this.setItemLayer(layername);
        }
        return this;
    }

    setItemLayer(layername){
        let data = this.layerDataMap[layername];
        if(data == null || data.features == null){
            return;
        }

        for(let j=0;j<data.features.length;j++){
            let labelData = data.features[j];
            labelData.layerName = layername;
            labelData.xyz = data.xyz;
            labelData.type = data.type;
            if(!labelData.fieldValueMap){
                labelData.fieldValueMap = this.getFieldValueMap(data,labelData);
            }
            this.labelDatas.push(labelData);
        }
    }

    getGroupLayer(layername,value){
        this.labelDatas = [];

        let valueArr = value.split(',');
        let length = valueArr.length;
        if(length == 0){
            return this;
        }

        let data = this.layerDataMap[layername];
        if(data == null || data.features == null){
            return this;
        }

        for(let j = 0 ; j < length ; j ++){
            let dataArr = data.features[valueArr[j]];
            if(dataArr == null){
                continue;
            }

            let labelData = data.features[i];
            labelData.layerName = layername;
            labelData.xyz = data.xyz;
            labelData.type = data.type;
            if(!labelData.fieldValueMap){
                labelData.fieldValueMap = this.getFieldValueMap(data,labelData);
            }
            this.labelDatas.push(labelData);
        }
        return this;
    }

    setStyle(fn){
        for(let i=0;i<this.labelDatas.length;i++){
            let labelData = this.labelDatas[i];
            let get = function(key){
                return labelData.fieldValueMap[key];
            };
            let style = fn.call({},this.level,get);
            if(style && style.show == true){
                labelData.style = style;
                labelData.fieldValueMap['avoidWeight']=style.avoidWeight;
                this.features.push(labelData);
            }
        }
    }

    setGlobalStyle(fn){
        this.globalStyle = fn.call({});
    }

    getFieldValueMap(data,labelData){
        let  fieldValueMap=  {};
        for(let i = 0;i<data.fieldsConfig.length;i++){
            let fieldName = data.fieldsConfig[i]['name'];
            let index = data.fieldsConfig[i]['index'];
            let id = data.fieldsConfig[i]['id'];
            if(id == true){
                //图层名和数据的主键构成唯一id
                fieldValueMap['attributeId'] =labelData.layerName+labelData[1][index];
            }
            fieldValueMap[fieldName] = labelData[1][index];
        }
        return fieldValueMap;
    }

    draw(){

    }
}

module.exports = LabelDrawer;



/***/ }),
/* 354 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

﻿/**
 * Class: GAnnoAvoid
 * 避让策略类
 *
 * Inherits:
 *  - <Object>
 */
const GGridIndex = __webpack_require__(355);
const GLabelBox = __webpack_require__(356);
class GAnnoAvoid{
    constructor(ctx,formatFont) {
        this.grid=null;
        this.GLabelBox = new GLabelBox(ctx,formatFont);
    }

    //注记和线图元进行避让
    avoid(labelFeatures,avoidLineFeatures){
        if(avoidLineFeatures.length  == 0){
            return labelFeatures;
        }

        for(let i =0;i<labelFeatures.length;i++){
            let labelFeature = labelFeatures[i];
            if(labelFeature.type == 1){
                this.avoidPointLine(labelFeature,avoidLineFeatures);
            }

            if(labelFeature.type == 2){
                labelFeature.isCollision = this.avoidLineLine(labelFeature,avoidLineFeatures);
            }
        }

        return labelFeatures;
    }

    //点注记和线图元避让
    avoidPointLine(feature,avoidLineFeatures){
        let startDirection = feature.style.direction;
        let weight = feature.weight;

        //获取需要与注记避让的线图元
        avoidLineFeatures = this.getAvoidLineFeatures(weight,avoidLineFeatures);

        //删除的方向个数
        let delDirectionCount = 0;
        let boxCount = feature.boxs.length;
        for(let i = 0;i<avoidLineFeatures.length;i++){
            let avoidLineFeature = avoidLineFeatures[i];
            for(let j = 0;j<boxCount;j++) {
                let direction = startDirection + j;
                if (direction >= boxCount) {
                    direction = direction - boxCount;
                }

                let box = feature.boxs[direction];
                let b = this.crashBoxLine(box,avoidLineFeature.sourceDatas,false);
                if(b){
                    if(feature.directions[direction]){
                        //点注记的四个方向中减去一个方向
                        delete feature.directions[direction];
                        delDirectionCount++;

                        //如果四个方向都压盖，则压盖
                        if(delDirectionCount == 4){
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }


    //线注记和线图元避让
    avoidLineLine(feature,avoidLineFeatures){
        let weight = feature.weight;

        //获取需要与注记避让的线图元
        avoidLineFeatures = this.getAvoidLineFeatures(weight,avoidLineFeatures);

        for(let j = 0;j<avoidLineFeatures.length;j++){
            let avoidLineFeature = avoidLineFeatures[j];
            let isCollision = false;
            for(let i = 0;i<feature.boxs.length;i++){
                isCollision = this.crashPartLineLine(feature.boxs[i],avoidLineFeature.sourceDatas);
                if(isCollision){
                    return true;
                }
            }
        }

        return false;
    }

    //获取权重比点注记高的先图元要素
    getAvoidLineFeatures(weight,avoidLineFeatures){
        let alFeatures = [];
        for(let i = 0;i<avoidLineFeatures.length;i++){
            let avoidLineFeature = avoidLineFeatures[i];
            let lineWeight = avoidLineFeature.weight;
            if(lineWeight > weight){
                alFeatures.push(avoidLineFeature);
            }
        }
        return alFeatures;
    }

    // box和line是否相交
    crashBoxLine(box,line,isFour){
        let boxLines = [];
        if(isFour){
            boxLines.push([box[0],box[1],box[2],box[1]]);
            boxLines.push([box[2],box[1],box[2],box[3]]);
            boxLines.push([box[2],box[3],box[0],box[3]]);
            boxLines.push([box[0],box[3],box[0],box[1]]);
        }else{
            boxLines.push([box[0],box[1],box[2],box[3]]);
            boxLines.push([box[2],box[1],box[0],box[3]]);
        }


        for(let i = 0;i<boxLines.length;i++){
            let boxLine = boxLines[i];
            for(let j = 0;j<line.length/2-1;j++){
                let partLine = [line[2*j],line[2*j+1],line[2*(j+1)],line[2*(j+1)+1]];
                if(this.crashPartLinePartLine(boxLine,partLine)){
                    return true;
                }
            }
        }
        return false;
    }

    // 两条线是否相交
    crashLineLine(line1,line2){
        for(let i = 0;i<line1.length/2-1;i++){
            let partLine1 = [line1[2*i],line1[2*i+1],line1[2*(i+1)],line1[2*(i+1)+1]];
            for(let j = 0;j<line2.length/2-1;j++){
                let partLine2 = [line2[2*j],line2[2*j+1],line2[2*(j+1)],line2[2*(j+1)+1]];
                if(this.crashPartLinePartLine(partLine1,partLine2)){
                    return true;
                }
            }
        }
        return false;
    }


    // 两条线是否相交
    crashPartLineLine(partLine,line2){
        for(let j = 0;j<line2.length/2-1;j++){
            let partLine2 = [line2[2*j],line2[2*j+1],line2[2*(j+1)],line2[2*(j+1)+1]];
            if(this.crashPartLinePartLine(partLine,partLine2)){
                return true;
            }
        }
        return false;
    }

    // 两条线段是否相交
    crashPartLinePartLine(line1,line2){
        let p0_x = line1[0];
        let p0_y = line1[1];
        let p1_x = line1[2];
        let p1_y = line1[3];

        let p2_x = line2[0];
        let p2_y = line2[1];
        let p3_x = line2[2];
        let p3_y = line2[3];


        let s02_x, s02_y, s10_x, s10_y, s32_x, s32_y, s_numer, t_numer, denom, t;
        s10_x = p1_x - p0_x;
        s10_y = p1_y - p0_y;
        s32_x = p3_x - p2_x;
        s32_y = p3_y - p2_y;

        denom = s10_x * s32_y - s32_x * s10_y;
        if (denom == 0)//平行或共线
            return 0; // Collinear
        let denomPositive = denom > 0;

        s02_x = p0_x - p2_x;
        s02_y = p0_y - p2_y;
        s_numer = s10_x * s02_y - s10_y * s02_x;
        if ((s_numer < 0) == denomPositive)//参数是大于等于0且小于等于1的，分子分母必须同号且分子小于等于分母
            return 0; // No collision

        t_numer = s32_x * s02_y - s32_y * s02_x;
        if ((t_numer < 0) == denomPositive)
            return 0; // No collision

        if (((s_numer > denom) == denomPositive) || ((t_numer > denom) == denomPositive))
            return 0; // No collision
        return 1;
    }

    //避让
    defaultAvoid(features,hasImportant,ableWeight){
        this.grid = new GGridIndex(8192, 16, 0);
        if(features== null || features.length<1) return [];
        // console.time('计算box');
        // //设置box,如果有线编码或者线箭头，则会新增要素
        features = this.GLabelBox.setBox(features,false);
        // console.timeEnd('计算box');

        // console.time('mergeFeatures');
        features = this.mergeFeatures(features);
        // console.timeEnd('mergeFeatures');
        // console.time('排序');

        if(ableWeight){
            //权值排序
            this.sort(features,hasImportant);
        }
        // console.timeEnd('排序');

        // console.time('避让');
        //将注记添加到单元格中，进行避让
        for(let i =0;i<features.length;i++){
            this.avoidFeature(features[i]);
        }
        // console.timeEnd('避让');
        features = this.GLabelBox.filterFeature(features);

        // console.time('去重');
        //注记去重
        this.removeRepeat(features);
        // console.timeEnd('去重');
        features = this.filterFeature(features);
        this.prevFeatures = features;
        return features;
    }

    /**
     * 给要素设置避让的box和注记的绘制坐标
     * @param f
     */
    avoidFeature(f){
        if(f.style.show == false || f.hidden == true){
            f.hidden =true;
            return;
        }
        if(f.boxs){
            if(f.type == 1){
                //点注记跟其它注记避让
                this.avoidPoint(f);
            }else{
                if(f.isCollision){
                    f.hidden = true;
                }else{
                    //线注记跟其它注记进行避让
                    this.avoidLine(f);
                }
            }
        }else{
            f.hidden = true;
        }
    }

    /**
     * 将点注记加入到计算出的多个单元格中
     * @param feature
     */
    avoidPoint(feature){
        //如果为重要的，则不避让
        if(feature.style.isImportant == true){
            let box = feature.boxs[feature.style.direction];
            this.addBoxToCells(feature.primaryId,box);
            return;
        }

        //如果前面有小图标，并且开启了四宫格避让
        if(feature.style.isFourDirections && feature.style.texture){
            this.addFourCollisionFeatureToCells(feature,feature.style.direction);
        }else{
            //如果没有指定的方向
            if(!feature.directions[feature.style.direction]){
                feature.hidden = true;
                return;
            }

            let box = feature.boxs[feature.style.direction];
            let isCollision = this.isCollision(box);
            if(isCollision){
                feature.hidden = true;
                return;
            }else{
                this.addBoxToCells(feature.primaryId,box);
            }
        }
    }


    /**
     * 将线注记加入到计算出的多个单元格中
     * @param feature
     */
    avoidLine(feature){
        //如果为重要的，则不避让
        if(feature.style.isImportant == true){
            for(let i = 0 ;i<feature.boxs.length;i++){
                let box = feature.boxs[i];
                this.addBoxToCells(feature.primaryId+'index_'+i,box);
            }
            return;
        }

        //线注记是否与其它注记相交
        let isCollision = false;
        for(let i = 0 ;i<feature.boxs.length;i++){
            let box = feature.boxs[i];
            if(this.isCollision(box)){
                isCollision = true;
                break;
            }
        }

        if(isCollision){
            feature.hidden = true;
        }else{
            for(let i = 0 ;i<feature.boxs.length;i++){
                let box = feature.boxs[i];
                this.addBoxToCells(feature.primaryId+'index_'+i,box);
            }
        }
    }

    /**
     * 将点注记添加到单元格中
     * @param feature 点注记
     * @param index 点注记四宫格的index
     */
    addFourCollisionFeatureToCells(feature,index){
        let isCollision = true;
        let box = [];
        //如果有指定的方向
        if(feature.directions[index]){
            box = feature.boxs[index];
            isCollision = this.isCollision(box);
        }

        // 如果相交,进行四宫格避让
        if(isCollision){
            index ++;
            if(index == 4){
                index = index - 4;
            }

            //四个方向全部避让完成，仍然相交
            if(index == feature.style.direction){
                feature.hidden = true;
                return;
            }else{
                //换个点注记方向的box，再进行递归避让检测
                this.addFourCollisionFeatureToCells(feature,index);
            }
        }else{
            feature.style.textPoint =feature.fourPoints[index];
            feature.box = box;
            this.addBoxToCells(feature.primaryId,box);
        }
    }

    /**
     *  返回注记的box是否与其它注记相交
     * @param row
     * @param col
     * @param feature
     */
    isCollision(box){
        let x1 = box[0];
        let y1 = box[1];

        let x2 = box[2];
        let y2 = box[3];
        let result = this.grid.query(x1,y1,x2,y2);
        return result.length>0;
    }

    /**
     *  注记box所占的单元格标识为true
     */
    addBoxToCells(key,box){
        let x1 = box[0];
        let y1 = box[1];
        let x2 = box[2];
        let y2 = box[3];
        this.grid.insert(key,x1,y1,x2,y2);
    }

    //attributeId当相同时，点注记的四个方向合并。线注记有一个是和图元压盖时，其它的线注记也不显示
    mergeFeatures(features){
        let map = {};
        for(let i = 0;i<features.length;i++){
            let feature = features[i];
            if(!map[feature.attributeId]){
                map[feature.attributeId] = [];
            }
            map[feature.attributeId].push(feature);
        }

        for(let key in map) {
            let array = map[key];
            if (array.length > 1) {
                let fristFeature = array[0];
                //点注记，合并四宫格方向
                if (fristFeature.type == '1') {
                    let directions = array[0].directions;
                    for (let j = 1; j < array.length; j++) {
                        directions = this.getBothDirection(directions, array[j].directions)
                    }

                    let isEmpty = false;
                    for(let dKey in directions){
                        isEmpty = true;
                        break;
                    }


                    for (let k = 0; k < array.length; k++) {
                        if(isEmpty){
                            array[0].hidden = true;
                        }else{
                            array[0].directions = directions;
                        }
                    }
                }

                //是线注记,如果一条线压盖，其它的线也不显示
                if (fristFeature.type == '2') {
                    let isCollision = false;
                    for (let n = 0; n < array.length; n++) {
                        if (array[n].isCollision == true) {
                            isCollision = true;
                            break;
                        }
                    }

                    if (isCollision) {
                        for (let m = 0; m < array.length; m++) {
                            array[m].hidden = true
                        }
                    }
                }
            }
        }

        //去掉隐藏的注记
        return this.GLabelBox.filterFeature(features);
    }

    //要素排序.
    sort(features,hasImportant){
        if(features.length > 0) {
            //从大到少排序
            return  features.sort(function (a, b) {
                if(hasImportant){
                    if(a.style.isImportant && !b.style.isImportant){
                        return -1;
                    }
                    if(b.style.isImportant && !a.style.isImportant){
                        return 1;
                    }
                }

                let aAttr = a.weight;
                let bAttr = b.weight;

                let aId = a.primaryId;
                let bId = b.primaryId;

                if(!aAttr){
                    aAttr = -1;
                }
                if(!bAttr){
                    bAttr = -1;
                }
                if (aAttr < bAttr) {
                    return 1;
                } else if (aAttr == bAttr){
                    if(aId < bId){
                        return 1;
                    }
                    else{
                        return -1;
                    }
                } else {
                    return -1;
                }
            }.bind(this));
        }
    }

    //合并两个点注记的方向
    getBothDirection(directions1,directions2){
        let directions = {};
        for(let key in directions1){
            if(directions2[key]){
                directions[key] = 1;
            }
        }
        return directions;
    }


    //去掉重复的注记
    removeRepeat(features){
        let pointsFs = [];
        let lineTextFs = [];
        let lineCodeFs = [];

        let drawedPointFs = [];
        let drawedLineTextFs = [];
        let drawedLineCodeFs = [];
        for(let i = 0;i<features.length;i++){
            let f = features[i];
            if(f.type == 1){
                if(f.drawed == true){
                    drawedPointFs.push(f);
                }else{
                    pointsFs.push(f);
                }

            }else if(f.type == 2){
                if(f.lineType == 'text'){
                    if(f.drawed == true){
                        drawedLineTextFs.push(f);
                    }else{
                        lineTextFs.push(f);
                    }
                }
                if(f.lineType == 'code'){
                    if(f.drawed == true){
                        drawedLineCodeFs.push(f);
                    }else{
                        lineCodeFs.push(f);
                    }
                }
            }
        }


        for(let j = 0;j<pointsFs.length;j++){
            let pf = pointsFs[j];
            this.getShowPointFeatrues(drawedPointFs,pf);
        }

        for(let k = 0;k<lineTextFs.length;k++){
            let ltf = lineTextFs[k];
            this.getShowLineTextFeatrues(drawedLineTextFs,ltf);
        }


        for(let n = 0;n<lineCodeFs.length;n++){
            let lcf = lineCodeFs[n];
            this.getShowLineCodeFeatrues(drawedLineCodeFs,lcf);
        }

        //清除上一屏的注记的绘制状态
        if(this.prevFeatures){
            for(let m = 0;m<this.prevFeatures.length;m++){
                let pf = this.prevFeatures[m];
                pf.drawed = false;
            }
        }
    }

    getShowPointFeatrues(features,feature){
        let hidden =  false;
        for(let i = 0;i<features.length;i++){
            let f = features[i];
            if(f.label == feature.label && f.style.distance && feature.style.distance){
                //求两个点注记之间的距离
                let distance = this.getDistance(f.style.textPoint,feature.style.textPoint);
                if(distance<f.style.distance){
                    hidden = true;
                    feature.hidden = true;
                }
            }
        }

        if(!hidden){
            features.push(feature);
        }
    }

    getShowLineTextFeatrues(features,feature){
        let hidden =  false;
        for(let i = 0;i<features.length;i++){
            let f = features[i];
            if(f.label == feature.label && f.style.lineTextDistance && feature.style.lineTextDistance){
                //求两个点注记之间的距离
                let distance = this.getDistance(f.centerPoint,feature.centerPoint);
                if(distance<f.style.lineTextDistance){
                    hidden = true;
                    feature.hidden = true;
                }
            }
        }

        if(!hidden){
            features.push(feature);
        }
    }

    getShowLineCodeFeatrues(features,feature){
        let hidden =  false;
        for(let i = 0;i<features.length;i++){
            let f = features[i];
            if(f.label == feature.label && f.style.lineCodeDistance && feature.style.lineCodeDistance){
                //求两个点注记之间的距离
                let distance = this.getDistance(f.centerPoint,feature.centerPoint);
                if(distance<f.style.lineCodeDistance){
                    hidden = true;
                    feature.hidden = true;
                }
            }
        }

        if(!hidden){
            features.push(feature);
        }
    }

    /**
     * 求两点之间的距离
     */
    getDistance(p1,p2){
        let calX = p2[0] - p1[0];
        let calY = p2[1] - p1[1];
        return Math.pow((calX *calX + calY * calY), 0.5);
    }

    // 获取过滤后的要素.
    filterFeature(features){
        let returnFeatures = [];
        //剔除需避让的要素
        for(let i= 0 ;i<features.length;i++){
            if(!features[i].hidden ) {
                features[i].drawed = true;
                returnFeatures.push(features[i]);
            }
        }
        return returnFeatures;
    }
}
module.exports = GAnnoAvoid;

/***/ }),
/* 355 */
/***/ ((module) => {


module.exports = GGridIndex;
var NUM_PARAMS = 3;
function GGridIndex(extent, n, padding) {
    var cells = this.cells = [];

    if (extent instanceof ArrayBuffer) {
        this.arrayBuffer = extent;
        var array = new Int32Array(this.arrayBuffer);
        extent = array[0];
        n = array[1];
        padding = array[2];

        this.d = n + 2 * padding;
        for (var k = 0; k < this.d * this.d; k++) {
            var start = array[NUM_PARAMS + k];
            var end = array[NUM_PARAMS + k + 1];
            cells.push(start === end ?
                    null :
                    array.subarray(start, end));
        }
        var keysOffset = array[NUM_PARAMS + cells.length];
        var bboxesOffset = array[NUM_PARAMS + cells.length + 1];
        this.keys = array.subarray(keysOffset, bboxesOffset);
        this.bboxes = array.subarray(bboxesOffset);

        this.insert = this._insertReadonly;

    } else {
        this.d = n + 2 * padding;
        for (var i = 0; i < this.d * this.d; i++) {
            cells.push([]);
        }
        this.keys = [];
        this.bboxes = [];
    }

    this.n = n;
    this.extent = extent;
    this.padding = padding;
    this.scale = n / extent;
    this.uid = 0;

    var p = (padding / n) * extent;
    this.min = -p;
    this.max = extent + p;
}


GGridIndex.prototype.insert = function(key, x1, y1, x2, y2) {
    this._forEachCell(x1, y1, x2, y2, this._insertCell, this.uid++);
    this.keys.push(key);
    this.bboxes.push(x1);
    this.bboxes.push(y1);
    this.bboxes.push(x2);
    this.bboxes.push(y2);
};

GGridIndex.prototype._insertReadonly = function() {
    throw 'Cannot insert into a GridIndex created from an ArrayBuffer.';
};

GGridIndex.prototype._insertCell = function(x1, y1, x2, y2, cellIndex, uid) {
    this.cells[cellIndex].push(uid);
};

GGridIndex.prototype.query = function(x1, y1, x2, y2) {
    var min = this.min;
    var max = this.max;
    if (x1 <= min && y1 <= min && max <= x2 && max <= y2) {
        // We use `Array#slice` because `this.keys` may be a `Int32Array` and
        // some browsers (Safari and IE) do not support `TypedArray#slice`
        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice#Browser_compatibility
        return Array.prototype.slice.call(this.keys);

    } else {
        var result = [];
        var seenUids = {};
        this._forEachCell(x1, y1, x2, y2, this._queryCell, result, seenUids);
        return result;
    }
};

GGridIndex.prototype._queryCell = function(x1, y1, x2, y2, cellIndex, result, seenUids) {
    var cell = this.cells[cellIndex];
    if (cell !== null) {
        var keys = this.keys;
        var bboxes = this.bboxes;
        for (var u = 0; u < cell.length; u++) {
            var uid = cell[u];
            if (seenUids[uid] === undefined) {
                var offset = uid * 4;
                if ((x1 <= bboxes[offset + 2]) &&
                    (y1 <= bboxes[offset + 3]) &&
                    (x2 >= bboxes[offset + 0]) &&
                    (y2 >= bboxes[offset + 1])) {
                    seenUids[uid] = true;
                    result.push(keys[uid]);
                } else {
                    seenUids[uid] = false;
                }
            }
        }
    }
};

GGridIndex.prototype._forEachCell = function(x1, y1, x2, y2, fn, arg1, arg2) {
    var cx1 = this._convertToCellCoord(x1);
    var cy1 = this._convertToCellCoord(y1);
    var cx2 = this._convertToCellCoord(x2);
    var cy2 = this._convertToCellCoord(y2);
    for (var x = cx1; x <= cx2; x++) {
        for (var y = cy1; y <= cy2; y++) {
            var cellIndex = this.d * y + x;
            if (fn.call(this, x1, y1, x2, y2, cellIndex, arg1, arg2)) return;
        }
    }
};

GGridIndex.prototype._convertToCellCoord = function(x) {
    return Math.max(0, Math.min(this.d - 1, Math.floor(x * this.scale) + this.padding));
};

GGridIndex.prototype.toArrayBuffer = function() {
    if (this.arrayBuffer) return this.arrayBuffer;

    var cells = this.cells;

    var metadataLength = NUM_PARAMS + this.cells.length + 1 + 1;
    var totalCellLength = 0;
    for (var i = 0; i < this.cells.length; i++) {
        totalCellLength += this.cells[i].length;
    }

    var array = new Int32Array(metadataLength + totalCellLength + this.keys.length + this.bboxes.length);
    array[0] = this.extent;
    array[1] = this.n;
    array[2] = this.padding;

    var offset = metadataLength;
    for (var k = 0; k < cells.length; k++) {
        var cell = cells[k];
        array[NUM_PARAMS + k] = offset;
        array.set(cell, offset);
        offset += cell.length;
    }

    array[NUM_PARAMS + cells.length] = offset;
    array.set(this.keys, offset);
    offset += this.keys.length;

    array[NUM_PARAMS + cells.length + 1] = offset;
    array.set(this.bboxes, offset);
    offset += this.bboxes.length;

    return array.buffer;
};


/***/ }),
/* 356 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Class: GLabelBox
 *  计算注记避让box类
 *
 * Inherits:
 *  - <Object>
 */
const AvoidUtil =  __webpack_require__(349);
const Util =  __webpack_require__(348);
class GLabelBox{
    constructor(ctx,formatFont) {
        this.boxDistance = 0;
        this.ctx =  ctx;
        this.formatFont = formatFont;
    }

    setBox(features,isSource){
        features.forEach(function(f, index) {
            f.hidden =false;
            //去掉尾部的空格
            f.label = AvoidUtil.formatLabel(f.label);

            //如果要素不显示,没字就不画
            if(f.style.show == false){
                f.hidden =true;
                return;
            }
            if(f.type == 1){
                //构造点盒子
                if(isSource){
                    this.setPointBox(f,f.sourceAngleData,this.ctx);
                }else{
                    this.setPointBox(f,f.datas,this.ctx);
                }
            }
            if(f.type == 2){
                //如果是线文本注记
                if(f.lineType == 'text'){
                    if(isSource){
                        this.setTextLineBox(f,f.sourceAngleData,this.ctx);
                    }else{
                        this.setTextLineBox(f,f.datas,this.ctx);
                    }
                }

                //如果是线编码注记
                if(f.lineType == 'code') {
                    if(isSource){
                        this.setCodeLineBox(f,f.sourceAngleData,this.ctx);
                    }else{
                        this.setCodeLineBox(f,f.datas,this.ctx);
                    }
                }

                //如果是线箭头注记
                if(f.lineType == 'arrow') {
                    if(isSource){
                        this.setArrowLineBox(f,f.sourceAngleData);
                    }else{
                        this.setArrowLineBox(f,f.datas);
                    }
                }
            }
        }.bind(this));
        return this.filterFeature(features);
    }

    //构造点注记的boxs,上下左右四个方向
    setPointBox(feature,datas,ctx){
        let style = feature.style;
        let currPara = {};

        let graphicWidth = style.graphicWidth;
        let graphicHeight = style.graphicHeight;

        let img = feature.iconImg;
        if(img){
            //如果没有
            if(!graphicWidth || !graphicHeight) {
                graphicWidth = img.width;
                graphicHeight = img.height;
            }
        }else{
            graphicWidth = 0;
            graphicHeight = 0;
        }

        currPara.fontwidth = graphicWidth;
        currPara.fontheight = graphicHeight;

        //对要显示的点注记内容按照用户的转换函数进行转换
        if(style.labelFunction){
            let labelFunction = new Function("label", style.labelFunction);
            try{
                feature.label = labelFunction.call({}, feature.attributes[style.labelfield]);
            }catch (e){
                console.warn(feature.label + ': 调用labelFunction失败!');
            }
        }

        let labelIsNotNull = AvoidUtil.isNotNull(feature.label);
        //如既没有文字，又没有图标,则不显示
        if(!labelIsNotNull && (graphicWidth == 0  || graphicHeight == 0)){
            feature.hidden =true;
            return;
        }


        let tmpLabels = 0;
        //设置当前注记的宽度和高度
        //注记分行
        if(labelIsNotNull){
            //转换为字符串
            feature.label = feature.label +'';
            tmpLabels = feature.label.split(' ');
            let tmpLabelWidth=0;
            ctx.save();
            if(this.formatFont){
                ctx.font = Util.formatFont(style.pointFillFont,1,true);
            }else{
                ctx.font = style.pointFillFont;
            }

            for(let i = 0;i<tmpLabels.length;i++ ){
                let oneRowLabelWidth = Util.measureText(tmpLabels[i],ctx.font,ctx);
                tmpLabelWidth = oneRowLabelWidth > tmpLabelWidth?oneRowLabelWidth:tmpLabelWidth;
            }
            ctx.restore();
            //各行的最宽宽度
            currPara.fontwidth =  tmpLabelWidth;
            //文字的高度 * 文字的行数+  行间距
            currPara.fontheight = style.pointHeight *  tmpLabels.length  + 2*(tmpLabels.length -1);
            // 如果点符号高度（用点符号宽度代替）高于文字高度 则用点符号高度替换文字高度
            currPara.maxFontheight = currPara.fontheight> graphicHeight ? currPara.fontheight: graphicHeight;
        }


        let pointOffsetX = style.pointOffsetX;
        let pointOffsetY = style.pointOffsetY;
        if(!pointOffsetX){
            pointOffsetX = 0;
        }
        if(!pointOffsetY){
            pointOffsetY = 0;
        }
        let pt = [datas[0][0][0],datas[0][0][1]];
        pt[0] = pt[0]+pointOffsetX;
        pt[1] = pt[1]+pointOffsetY;
        if(style.pointHashBackground != true){
            style.pointBackgroundGap = 0;
        }
        if(graphicHeight == 0 || graphicWidth ==0){
            style.graphicDistance = 0;
        }


        if(!style.direction){
            style.direction = 0;
        }
        let boxs = [];
        let fourPoints = [];

        //如果有图标
        if(feature.style.texture){
            //如果有文字
            if(feature.label){
                let rightBox = [ pt[0] - graphicWidth*0.5 ,
                    pt[1] - style.pointBackgroundGap -currPara.maxFontheight*0.5,
                    pt[0] +graphicWidth*0.5 +style.graphicDistance+ currPara.fontwidth + style.pointBackgroundGap*2,
                    pt[1] +currPara.maxFontheight*0.5 + style.pointBackgroundGap];
                let leftBox = [pt[0] -graphicWidth*0.5 -style.graphicDistance- currPara.fontwidth - style.pointBackgroundGap*2,
                    rightBox[1],pt[0] + graphicWidth*0.5,
                    rightBox[3]];

                let bottomBox = [pt[0]-currPara.fontwidth*0.5-style.pointBackgroundGap,
                    pt[1] -graphicHeight*0.5 , pt[0]+currPara.fontwidth*0.5+style.pointBackgroundGap,
                    pt[1]+graphicHeight*0.5 + style.graphicDistance+style.pointBackgroundGap*2 +currPara.maxFontheight] ;

                let topBox = [bottomBox[0],pt[1]  -style.graphicDistance - style.pointBackgroundGap*2 - currPara.maxFontheight-graphicHeight*0.5 ,
                    bottomBox[2],pt[1]+graphicHeight*0.5];

                rightBox = this.boxScale(rightBox,style.pointBoxDisance);
                leftBox = this.boxScale(leftBox,style.pointBoxDisance);
                bottomBox = this.boxScale(bottomBox,style.pointBoxDisance);
                topBox = this.boxScale(topBox,style.pointBoxDisance);
                boxs = [rightBox,leftBox,bottomBox,topBox];

                //不包括点图标,用于文字绘制的起点坐标
                let rPoint = [pt[0] + graphicWidth*0.5 + style.graphicDistance + style.pointBackgroundGap,
                    pt[1]-currPara.fontheight*0.5+style.pointHeight*0.5];
                let lPoint = [pt[0] -graphicWidth*0.5 - style.graphicDistance - style.pointBackgroundGap -currPara.fontwidth,
                    pt[1]-currPara.fontheight*0.5+style.pointHeight*0.5];
                let bPoint = [pt[0]- currPara.fontwidth*0.5,
                    pt[1] + style.graphicDistance + style.pointBackgroundGap + style.pointHeight*0.5+graphicHeight*0.5];
                let tPoint = [bPoint[0],
                    pt[1]-style.graphicDistance-style.pointBackgroundGap - currPara.fontheight+ style.pointHeight*0.5-graphicHeight*0.5];
                fourPoints = [rPoint ,lPoint  ,bPoint  ,tPoint ];
            }else{
                //只有图标，没有文字
                let middleBox = [ pt[0] - graphicWidth*0.5 ,
                    pt[1] -graphicHeight*0.5,
                    pt[0] +graphicWidth*0.5,
                    pt[1] +graphicHeight*0.5];
                middleBox = this.boxScale(middleBox,style.pointBoxDisance);
                boxs = [middleBox];
                fourPoints = [pt[0],pt[1]];
                feature.directions = {0:1};
            }
        }else{
            //强制只有一个方向
            style.direction = 0;

            let middleBox = [pt[0] - currPara.fontwidth*0.5 - style.pointBackgroundGap,pt[1]- style.pointBackgroundGap -currPara.maxFontheight*0.5,
                pt[0] + currPara.fontwidth*0.5 + style.pointBackgroundGap,pt[1]+style.pointBackgroundGap +currPara.maxFontheight*0.5  ];
            middleBox = this.boxScale(middleBox,style.pointBoxDisance);
            boxs = [middleBox];

            let mPoint = [pt[0] - currPara.fontwidth*0.5,pt[1]-currPara.fontheight*0.5+style.pointHeight*0.5];
            fourPoints = [mPoint];
            feature.directions = {0:1};
        }

        feature.boxs = boxs;
        feature.box = boxs[style.direction];

        feature.fourPoints = fourPoints;
        feature.style.textPoint = fourPoints[style.direction];
    }

    /**
     * 设置线文字的box
     *  Parameters :
     *  feature - 单个线注记要素
     */
    setTextLineBox(feature,datas,ctx){
        let label = feature.label;
        let textPoints = datas;
        if(textPoints.length == 0){
            feature.hidden = true;
            return;
        }

        let style = feature.style;
        //将分段的点数据和角度数据保留，留给后面绘制
        feature.textPoints = textPoints;
        //线的boxs
        let lineBoxs = [];
        //如果线注记带底色
        if(style.lineHashBackground == true || textPoints.length ==1){
            let p = textPoints[0][0];
            if(textPoints.length >1){
                //获取线段的中间点
                let index = Math.floor(label.length/2);
                p = textPoints[index][0];
            }

            ctx.save();
            if(this.formatFont){
                ctx.font = Util.formatFont(style.lineFillFont,1,true);
            }else{
                ctx.font = style.lineFillFont;
            }

            let w = Util.measureText(feature.label,ctx.font,ctx);
            ctx.restore();

            let minX = p[0] - w/2 -style.lineBackgroundGap;
            let maxX =  p[0]+ w/2 +style.lineBackgroundGap;
            let minY = p[1] -style.lineHeight*0.5-style.lineBackgroundGap;
            let maxY = p[1]+style.lineHeight*0.5 +style.lineBackgroundGap;
            let box = [minX,minY,maxX,maxY];
            this.boxScale(box,style.lineTextBoxDisance);
            lineBoxs.push(box);
        }else{
            //如果文字需要旋转
            if(style.lineTextRotate || style.lineTextRotate == 0){
                for(let m = 0;m<textPoints.length;m++){
                    textPoints[m][1] = style.lineTextRotate;
                }
            }else{
                //如果文字注记旋转角度方向不一致(有的字向左，有的字向右旋转)，则调整为一致
                this.textToSameBearing(feature.angle,textPoints);

                if(!style.isImportant){
                    //判断线文字之间的最大夹角是否大于指定的阈值
                    if(this.isMessy(textPoints,style,label)){
                        feature.hidden = true;
                        return;
                    }
                }
            }

            //获取每个字的box,判断每个字之前是否有压盖
            let boxs = this.getLineBoxs(label,textPoints,style);
            if(boxs){
                lineBoxs =lineBoxs.concat(boxs);
            }else{
                feature.hidden = true;
                return;
            }
        }
        feature.boxs = lineBoxs;
    }

    /**
     * 设置线编码的box
     *  Parameters :
     *  feature - 单个线注记要素
     */
    setCodeLineBox(feature,datas,ctx){
        let codePoints = datas;
        if(codePoints.length == 0){
            feature.hidden = true;
            return;
        }

        let style = feature.style;
        //如果要显示道路编号
        let p = codePoints[0][0];

        ctx.save();
        if(this.formatFont){
            ctx.font = Util.formatFont(style.codeLineFillFont,1,true);
        }else{
            ctx.font = style.codeLineFillFont;
        }

        let w = Util.measureText(feature.label,ctx.font,ctx);
        ctx.restore();


        let minX = p[0] - w/2 -style.codeLineBackgroundGap;
        let maxX =  p[0]+ w/2 +style.codeLineBackgroundGap;
        let minY = p[1] -style.codeLineHeight*0.5-style.codeLineBackgroundGap;
        let maxY = p[1]+ style.codeLineHeight*0.5 +style.codeLineBackgroundGap;
        let box = [minX,minY,maxX,maxY];
        this.boxScale(box,style.lineCodeBoxDisance);
        feature.boxs = [box];
        feature.codePoint = p;
    }

    /**
     * 设置线箭头的box
     *  Parameters :
     *  feature - 单个线注记要素
     */
    setArrowLineBox(feature,datas){
        let arrowPoints = datas;
        if(arrowPoints.length != 3){
            feature.hiden = true;
            return;
        }

        let p = arrowPoints[0][0];
        let p1 = arrowPoints[2][0];

        let minX = p[0]<p1[0]?p[0]:p1[0];
        let maxX = p[0]>p1[0]?p[0]:p1[0];
        let minY = p[1]<p1[1]?p[1]:p1[1];
        let maxY = p[1]>p1[1]?p[1]:p1[1];
        let box = [minX,minY,maxX,maxY];
        this.boxScale(box,feature.style.lineArrowBoxDisance);
        feature.boxs = [box];
        feature.arrowPoint = arrowPoints;
    }


    // 获取过滤后的要素.
    filterFeature(features){
        let returnFeatures = [];
        //剔除需避让的要素
        for(let i= 0 ;i<features.length;i++){
            if(!features[i].hidden ) {
                returnFeatures.push(features[i]);
            }
        }
        return returnFeatures;
    }

    /**
     * 判断线文字之间的最大夹角是否大于指定的阈值
     *  Parameters :
     * textPoints - 文本注记的线段数组
     *  style -要素的样式
     */
    isMessy(textPoints,style,label){
        let firstPoint = textPoints[0][0];
        let minX = firstPoint[0];
        let minY = firstPoint[1];
        let maxX = firstPoint[0];
        let maxY = firstPoint[1];

        let minAngle = textPoints[0][1];
        let maxAngle = textPoints[0][1];
        for(let i = 0;i<label.length;i++){
            let currPoint = textPoints[i][0];
            let currAngle = textPoints[i][1];
            if(currPoint[0]>maxX)   // 判断最大值
                maxX=currPoint[0];
            if(currPoint[0]<minX)   // 判断最小值
                minX=currPoint[0];

            if(currPoint[1]>maxY)   // 判断最大值
                maxY=currPoint[1];
            if(currPoint[1]<minY)   // 判断最小值
                minY=currPoint[1];

            if(currAngle>maxAngle)   // 判断最大值
                maxAngle=currAngle;
            if(currAngle<minAngle)   // 判断最小值
                minAngle=currAngle;
        }

        //如果文字之间，相差的最大角度大于配置的角度度则不画
        if(maxAngle -minAngle > style.angle){
            if(style.angleSwitch ==false  && style.angleColor){
                style.lineFillStyle = style.angleColor;
            }else{
                return true;
            }
        }
        return false;
    }

    /**
     * 检测线文字之间是否有自压盖
     *  Parameters :
     * boxs -
     *  style -要素的样式
     */
    getLineBoxs(label,textPoints,style){
        //和其它注记避让的boxs
        let boxs = [];
        //自相交避让的boxs
        let owmCrashBoxs = [];
        for(let i = 0;i<label.length;i++){
            let pt = textPoints[i][0];
            //解决旋转后的注记和不旋转的注记样式不一致的问题
            if(textPoints[i][1] == 0){
                textPoints[i][1] = 0.5;
            }
            //考虑到线文字注记有角度偏转，box统一增加1.2倍
            let labelBox = [pt[0]-(style.lineHeight*1.2)*0.5,pt[1]-style.lineHeight*1.2*0.5,pt[0]+(style.lineHeight*1.2)*0.5,pt[1]+style.lineHeight*1.2*0.5];
            this.boxScale(labelBox,style.lineTextBoxDisance);
            let owmCrashBox = [pt[0]-style.lineHeight*0.5,pt[1]-style.lineHeight*1.2*0.5,pt[0]+style.lineHeight*0.5,pt[1]+style.lineHeight*0.5];
            owmCrashBoxs.push(owmCrashBox);
            boxs.push(labelBox);
        }


        if(!style.isImportant){
            for(let j = 0;j<owmCrashBoxs.length-1;j++){
                let box1 = owmCrashBoxs[j];
                for(let k=j+1 ;k<owmCrashBoxs.length ;k++){
                    let box2 = owmCrashBoxs[k];
                    if(this.crashBox(box1,box2)){
                        return null;
                    }
                }
            }
        }
        return boxs;
    }

    // 两个盒子是否相交.
    crashBox(ibox,jbox){
        return ibox[0] <= jbox[2] &&
            ibox[2]  >= jbox[0] &&
            ibox[1]  <= jbox[3] &&
            ibox[3]  >= jbox[1] ;
    }

    boxScale(box,pointBoxDisance){
        if(!pointBoxDisance && pointBoxDisance!=0){
            pointBoxDisance = this.boxDistance;
        }

        box[0] = box[0]-pointBoxDisance*0.5;
        box[1] = box[1]-pointBoxDisance*0.5;
        box[2] = box[2]+pointBoxDisance*0.5;
        box[3] = box[3]+pointBoxDisance*0.5;
        return box;
    }


    /**
     * 如果文字注记旋转角度方向不一致(有的字向左，有的字向右旋转)，则调整为一致
     * @param textPoints
     */
    textToSameBearing(angle,textPoints){
        //保证竖方向的字是正的
        if(angle >= 45){
            angle = angle - 90;
        }else{
            if(angle <= - 45){
                angle = angle + 90;
            }
        }


        for(let i = 0;i<textPoints.length;i++){
            let p = textPoints[i][1];
            let offsetAngle = angle - p;
            if(offsetAngle > 45){
                textPoints[i][1] = p +90;
            }
            if(offsetAngle < -45){
                textPoints[i][1] = p -90;
            }
        }
    }

    // /**
    //  * 如果文字注记旋转角度方向不一致(有的字向左，有的字向右旋转)，则调整为一致
    //  * @param textPoints
    //  */
    // textToSameBearing(textPoints){
    //     let indexs = [];
    //     for(let m = 0;m<textPoints.length-1;m++){
    //         let p1 = textPoints[m][1];
    //         let p2 = textPoints[m+1][1];
    //         if(Math.abs(p1 -p2) >= 45){
    //             indexs.push(m+1);
    //         }
    //     }
    //
    //     if(indexs.length == 0){
    //         return;
    //     }
    //
    //     let leftIndexDis = indexs[0];
    //     let rightIndexDis = textPoints.length  - indexs[indexs.length - 1];
    //
    //     //从线头方向开始更换文字的角度
    //     if(leftIndexDis > rightIndexDis){
    //         for(let i = leftIndexDis-1;i<textPoints.length-2;i++){
    //             let p1 = textPoints[i][1];
    //             let p2 = textPoints[i+1][1];
    //             if(p1 -p2 >= 45){
    //                 textPoints[i+1][1] = p2 + 90;
    //             }
    //
    //             if(p1 -p2 <= -45){
    //                 textPoints[i+1][1] = p2 - 90;
    //             }
    //         }
    //     }else{
    //         //从线尾方向开始更换文字方向
    //         for(let j = indexs[indexs.length - 1];j>0;j--){
    //             let p1 = textPoints[j][1];
    //             let p2 = textPoints[j-1][1];
    //             if(p1 -p2 >= 45){
    //                 textPoints[j-1][1] = p2 + 90;
    //             }
    //
    //             if(p1 -p2 <= -45){
    //                 textPoints[j-1][1] = p2 - 90;
    //             }
    //         }
    //     }
    // }
}

module.exports = GLabelBox;

/***/ }),
/* 357 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

const GDistance = __webpack_require__(358);
const GisTools = __webpack_require__(347);
const AvoidUtil = __webpack_require__(349);
class GCutLine{
    static cutLineFeature(feature){
        let fs = [];
        let index = 0;
        if(feature.sourceData.length < 4){
            return fs;
        }



        let lineText = this.createLineTextFeatrue(feature,index);
        index = lineText.index;
        if(lineText.feature){
            fs.push(lineText.feature);
        }

        let lineCode= this.createLineCodeFeatrue(feature,index);
        index = lineCode.index;
        if(lineCode.feature){
            fs.push(lineCode.feature);
        }

        let lineArrow= this.createLineArrowFeatrue(feature,index);
        if(lineArrow.feature){
            fs.push(lineArrow.feature);
        }
        return fs;
    }

    /**
     * 创建线文字注记
     *  Parameters :
     *  feature
     *  index - 可用的line的index位置
     */
    static createLineTextFeatrue(feature,index){
        let style = feature.style;
        let line = feature.sourceData;
        let d = new GDistance();
        let gaps = [];
        let textFeature =null;

        if(AvoidUtil.isNotNull(feature.label)) {
            //获取线段长度
            // let lineDis = this.getLineDistance(line);
            //如果线段长度小于100个像素,则只取首尾两个点
            // if(lineDis < 100 && lineDis >0){
            //     line = [line[0],line[1],line[line.length-2],line[line.length-1]];
            // }

            //线注记的文字内容
            feature.label = feature.label+ '';
            for (let count = 0; count < feature.label.length; count++) {
                gaps.push(style.lineHeight*1.2 +2+ style.gap);
            }

            let cloneGaps = [].concat(gaps);
            let points = d.getNodePath(line, gaps);
            let textPoints = points.pointList;

            if(textPoints.length > 1){
                index = points.index;
                //需要延长的字个数
                let delayLength = feature.label.length - textPoints.length;
                if(delayLength > 0){
                    index = line.length;
                    //摆不下的字数少于3个字延长
                    if(delayLength <style.extendedNum){
                        this.delayTextPoint(line,textPoints,feature.label,style.chinaLabelWidth + style.gap);
                    }else{
                        return {feature:null,index:index};
                    }
                }

                let p1 = [textPoints[0][0][0], textPoints[0][0][1]];
                let p2 = textPoints[textPoints.length -1][0];

                //获取两点连线与x轴的夹角
                let angle = AvoidUtil.getAngle(p1,p2);
                textFeature =  this.cloneFeature(feature);
                textFeature.angle = angle;

                if(style.changeDirection != false){
                    //改变方向
                    //判断是否应该换方向
                    let showChanged = this.isChangeDirection(feature.label,p1, p2,angle);
                    if (showChanged) {
                        textPoints = textPoints.reverse();
                    }
                }

                textFeature.attributeId = textFeature.attributeId+'_text';
                textFeature.sourceAngleData = textPoints;
                textFeature.lineType = 'text';
            }else{
                if(style.isTransverse && !style.showRoadCode){
                    textFeature =  this.cloneFeature(feature);
                    textFeature.attributeId = textFeature.attributeId+'_text';
                    textFeature.sourceAngleData = [[[line[0],line[1]],0]];
                    textFeature.lineType = 'text';
                    index =2;
                }
            }

            //平移
            if(style.lineOffset && textFeature.sourceAngleData.length > 1){
                textFeature.sourceAngleData = GisTools.lineOffset(textFeature.sourceAngleData,style.lineOffset);
            }
        }
        return {feature:textFeature,index:index};
    }

    /**
     * 创建线编码注记
     *  Parameters :
     *  feature
     *  index - 可用的line的index位置
     */
    static createLineCodeFeatrue(feature,index){
        let style = feature.style;
        let line = feature.sourceData;
        let d = new GDistance();
        let gaps = [];
        let codeFeature =null;

        let roadLabel = feature.roadCodeLabel;
        //如果有道路编码
        if(style.showRoadCode && AvoidUtil.isNotNull(roadLabel) && index < line.length){
            let codeLine = line.slice(index,line.length -1);
            //默认是30个像素
            gaps.push(30);
            let cPoints = d.getNodePath(codeLine, gaps);
            let codePoints = cPoints.pointList;
            if(codePoints.length  == 1){
                index = index + cPoints.index;
                codeFeature =  this.cloneFeature(feature);
                codeFeature.attributeId = codeFeature.attributeId+'_code';
                codeFeature.sourceAngleData = codePoints;
                codeFeature.lineType = 'code';
                codeFeature.label = roadLabel+'';
            }

            if(codePoints.length ==0){
                codeFeature =  this.cloneFeature(feature);
                codeFeature.attributeId = codeFeature.attributeId+'_code';
                codeFeature.sourceAngleData = [[line,0]];
                codeFeature.lineType = 'code';
                codeFeature.label = roadLabel+'';
                index = 2;
                return {feature:codeFeature,index:index};
            }
        }
        return {feature:codeFeature,index:index};
    }

    /**
     * 创建线箭头注记
     *  Parameters :
     *  feature
     *  index - 可用的line的index位置
     */
    static createLineArrowFeatrue(feature,index){
        let style = feature.style;
        let line = feature.sourceData;
        let d = new GDistance();
        let gaps = [];
        let arrowFeature =null;

        //如果有箭头
        if(style.showArrow && index < line.length){
            let arrowLine = line.slice(index,line.length -1);
            gaps.push(16);
            gaps.push(style.arrowDistance);
            gaps.push(style.arrowSize);
            let aPoints = d.getNodePath(arrowLine, gaps);
            let arrowPoints = aPoints.pointList;

            if(arrowPoints.length == 3){
                arrowFeature =  this.cloneFeature(feature);
                arrowFeature.attributeId = arrowFeature.attributeId+'_arrow';
                arrowFeature.sourceAngleData = arrowPoints;
                arrowFeature.lineType = 'arrow';
            }
        }
        return {feature:arrowFeature,index:index};
    }

    /**
     * 当线文字放不下时，获取延长线上的点
     *  Parameters :
     *  line - 原始线坐标
     *  textPoints - 切割之后的点坐标
     *  label - 线注记
     *  gap - 每个字之间的间隔
     *  showChanged
     *
     */
    static delayTextPoint(line,textPoints,label,gap){
        let fristPoint = null;
        let secondPoint = null;
        //如果只能放下一个字
        if(textPoints.length == 1){
            fristPoint = [line[0],line[1]];
        }else{
            fristPoint = textPoints[textPoints.length-2][0];
        }
        secondPoint = textPoints[textPoints.length-1][0];
        let angle = textPoints[textPoints.length-1][1];

        let len = textPoints.length;
        for(let i = 1;i<label.length - len +1;i++){
            let p = this.getPoint(fristPoint,secondPoint,gap*i);
            let textPoint = [p,angle];
            textPoints.push(textPoint);
        }
    }

    /**
     * 克隆feature
     *  Parameters :
     *  feature - 单个线注记要素
     */
    static cloneFeature(feature){
        return {type:feature.type,datas:feature.datas,sourceData:feature.sourceData,label:feature.label,roadCodeLabel:feature.roadCodeLabel,
            attributes:feature.attributes,attributeId:feature.attributeId,style:feature.style,textures:feature.textures,xyz:feature.xyz,
            lineType:feature.lineType,weight:feature.weight};
    }

    /**
     * 是否需要改变线的方向
     *  Parameters :
     *  p1 - 线段起点
     *  p2 -线段的重点
     *  angle - 两点连线与x轴的夹角
     */
    static isChangeDirection(label,p1,p2,angle){
        let showChange = false;
        //判断是否包含汉字
        if(/.*[\u4e00-\u9fa5]+.*$/.test(label)) {
            //如果是垂直线
            if(p1[0] == p2[0]){
                if(p1[1]>p2[1]){
                    showChange = true;
                    return showChange;
                }
            }

            //如果是反斜线，并且夹角与x轴的夹角大于45度
            if(angle<-45 && angle>-90 ){
                if(p1[0]< p2[0]){
                    showChange = true;
                }
            }else{
                if(p1[0]> p2[0]){
                    showChange = true;
                }
            }
        }else{
            if(p1[0] > p2[0]){
                showChange = true;
            }
        }
        return showChange;
    }




    /**
     * 求两点之间的距离
     */
    static getDistance(p1,p2){
        let calX = p2[0] - p1[0];
        let calY = p2[1] - p1[1];
        return Math.pow((calX *calX + calY * calY), 0.5);
    }

    /**
     * 获取线的长度
     */
    static getLineDistance(line){
        if(line.length <4){
            return 0;
        }

        let dis = 0;
        for(let i = 0;i<line.length/2-1;i++){
            let p1 = [line[2*i],line[2*i+1]];
            let p2 = [line[2*(i+1)],line[2*(i+1)+1]];
            dis = dis + this.getDistance(p1,p2);
        }
        return dis;
    }

    /**
     * 已知两点，延长距离，获取延长线上的点坐标
     */
    static getPoint(p1,p2,d){
        let xab = p2[0] - p1[0];
        let yab = p2[1] - p1[1];
        let xd = p2[0];
        let yd = p2[1];
        if(xab == 0){
            if(yab > 0){
                yd = p2[1] + d;
            }else{
                yd = p2[1] - d;
            }
        }else{
            let xbd = Math.sqrt((d * d)/((yab/xab) * (yab/xab) + 1));
            if (xab < 0) {
                xbd = -xbd
            }

            xd = p2[0] + xbd;
            yd = p2[1] + yab / xab * xbd;
        }
        return [xd,yd];
    }
}

module.exports = GCutLine;

/***/ }),
/* 358 */
/***/ ((module) => {

/**
 * Created by matt on 2017/3/5.
 */
class GDistance{
    getLengthPoint(fromX, fromY, toX, toY, len,index){
        let dx = toX - fromX;
        let dy = toY - fromY;
        let x_new;
        let y_new;
        if(dx == 0){
            x_new = toX;
            if(dy > 0){
                y_new = fromY + len;
            }else{
                y_new = fromY - len;
            }
            if(index == null){
                return [x_new,y_new];
            }else{
                return [x_new,y_new,index];
            }
        }

        let tan = dy / dx;
        let sec = Math.sqrt((tan * tan) + 1);
        let dx_new = Math.abs(len / sec);
        let dy_new = Math.abs(dx_new * tan);
        if(dx > 0){
            x_new = fromX + dx_new;
        }else{
            x_new = fromX - dx_new;
        }
        if(dy > 0){
            y_new = fromY + dy_new;
        }else{
            y_new = fromY - dy_new;
        }
        if(index == null){
            return [x_new,y_new];
        }else{
            return [x_new,y_new,index];
        }
    }

    getAngle(p1,p2){
        if(p2[0]-p1[0] == 0){
            if(p2[1]>p1[0]){
                return 90;
            }else{
                return -90;
            }
        }
        let k = (p2[1]-p1[1])/(p2[0]-p1[0]);
        let angle = 360*Math.atan(k)/(2*Math.PI);
        return angle;
    }

    length(x0, y0, x1, y1){
        let dx = x1 - x0;
        let dy = y1 - y0;
        let len = Math.sqrt(dx * dx + dy * dy);
        return len;
    }

    getNodePath(coords,interval){
        let previous = [];
        let points = {};
        let pointList = [];
        let intervalLength = interval.length;

        //初始化标记长度等于单位长度
        let fun_getInterval = function(interval){
            let value = interval[0];
            interval.splice(0,1);
            return value;
        }
        let markLength = fun_getInterval(interval);
        let index = 0;
        while(true){
            if(pointList.length == intervalLength){
                points.index = index;
                points.pointList = pointList;
                return points;
            }
            if(index >= coords.length){
                points.index = index;
                points.pointList = pointList;
                return points;
            }
            let x = coords[index];
            let y = coords[index + 1];
            //判断上一个节点是否为空
            if(previous.length == 0){
                //如果为空就设置当前点到 上一个节点上
                previous[0] = x;
                previous[1] = y;
                continue;
            }else{

                //如果不为空则需要求上一个节点与当前结点的距离
                let lengthPath = this.length(previous[0], previous[1], x, y);
                //把节点长度加起来

                if(lengthPath >= markLength){
                    //如果长度大于标记长度，则需要上一点到标记成都的点
                    let savePoint = this.getLengthPoint(previous[0],previous[1], x,y, markLength,null);
                    let angle = this.getAngle(previous,[x,y]);

                    if(angle == 90){
                        angle = 0;
                    }
                    if(angle == -90){
                        angle = 0;
                    }
                    if(angle == 0){
                        angle = 0.5;
                    }

                    //保证竖方向的字是正的
                    if(angle >= 45){
                        angle = angle - 90;
                    }else{
                        if(angle <= - 45){
                            angle = angle + 90;
                        }
                    }


                    let pointAngle = [savePoint,angle];
                    pointList.push(pointAngle);
                    previous[0] = savePoint[0];
                    previous[1] = savePoint[1];
                    markLength = fun_getInterval(interval);
                }else{
                    markLength = markLength - lengthPath;

                    previous[0] = x;
                    previous[1] = y;
                    index = index + 2;
                }
            }
        }

        points.index = index;
        points.pointList = pointList;
        return points;
    }
}

module.exports = GDistance;







/***/ }),
/* 359 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/6/27.
 */
class Feature{
    constructor() {
        this.id = Math.round(Math.random()*256*256*256);
        //要素类型，1代表点，2代表线
        this.type = 1;
        //数据一维数组，里面依次存放x,y地理坐标
        this.sourceData =[];
        //根据sourceAngleData转换为屏幕坐标的集合
        this.datas = [];
        //由原始sourceData切断过，带角度的数据
        this.sourceAngleData = [];
        this.attributes ={};

        this.latlngData = [];

        this.attributes['attributeId'] = this.id;
        //单个注记的样式
        this.style ={};
    }

    /**
     * 添加属性字段
     * Parameters :
     * key
     * value
     */
    addAttribute(key,value){
        this.attributes[key] = value;
    };

    /**
     * 根据字段名删除属性
     * Parameters :
     * key
     * value
     */
    removeAttributeByKey(key){
        delete this.attributes[key];
    };

    /**
     * 计算feature的最大外接矩形
     */
    getMaxExtent(){
        if(this.latlngData.length == 0 ){
            return null;
        }
        let minX = this.latlngData[0];
        let maxX = this.latlngData[0];
        let minY = this.latlngData[1];
        let maxY = this.latlngData[1];
        for(let i = 2;i< this.latlngData.length;i++){
            let tempX = this.latlngData[i];
            let tempY = this.latlngData[i+1];
            if(tempX>maxX)   // 判断最大值
                maxX=tempX;
            if(tempX<minX)   // 判断最小值
                minX=tempX;

            if(tempY>maxY)   // 判断最大值
                maxY=tempY;
            if(tempY<minY)   // 判断最小值
                minY=tempY;
            i++;
        }
        return [minX,minY,maxX,maxY];
    };

    /**
     * 判断feature是否在当前视口中
     * Parameters :
     * srceenBounds - 当前视口的外接矩形
     */
    inBounds(srceenBounds){
        let featureBounds = this.getMaxExtent();
        if(!featureBounds){
            return false;
        }

        return featureBounds[0] <= srceenBounds[2] &&
            featureBounds[2]  >= srceenBounds[0] &&
            featureBounds[1]  <= srceenBounds[3] &&
            featureBounds[3]  >= srceenBounds[1] ;
    };


    /**
     * 将要素的地理坐标转换为当前的屏幕坐标
     * Parameters:
     * srceenBounds - 当前视口的外接矩形
     * res - 当前地图的分辨率
     */
    transformData(srceenBounds,res){
        let datas = [];
        if(this.sourceData.length == 0){
            return;
        }
        //取出当前视口左上角的地理坐标
        let left = srceenBounds[0];
        let top = srceenBounds[3];

        for(let i = 0;i< this.latlngData.length;i++){
            let sx = this.latlngData[i];
            let sy = this.latlngData[i+1];
            datas.push((sx - left)/res);
            datas.push((top - sy)/res);
            i++;
        }
        return datas;
    };


    /**
     * 获取要素要显示的文字内容
     */
    getFeatureLabel(){
        let labelField = this.style['labelfield'];
        if(labelField){
            if(this.attributes[labelField]){
                return this.attributes[labelField]+'';
            }
        }
        return null;
    }
}

module.exports = Feature;


/***/ }),
/* 360 */
/***/ ((module) => {

class GGroup{
    constructor(groupName) {
        this.group = {};
        this.group.id = groupName;
        this.group.type = 'group';
        this.group.children = [];
    }

    /**
     * 添加样式
     * Parameters : gStyleItem  GStyleItem对象实例
     */
    addStyle(gStyleItem){
        this.group.children.push(gStyleItem.style);
    }
}

module.exports = GGroup;

/***/ }),
/* 361 */
/***/ ((module) => {


class GLevels{
    constructor(startLevel,endLevel) {
        this.levelsData = [];
        this.levelsKey = startLevel+'-'+endLevel;
    }

    /**
     * 添加组
     * Parameters : gGroup  GGroup对象实例
     */
    addGroup(gGroup){
        this.levelsData.push(gGroup.group);
    }

    /**
     * 添加组
     * Parameters : gGroup  GGroup对象实例
     */
    addStyleItem (gStyleItem){
        this.levelsData.push(gStyleItem.style);
    }
}

module.exports = GLevels;


/***/ }),
/* 362 */
/***/ ((module) => {

class GStyleItem{
    constructor(styleId,layerId) {
        this.style = {};
        this.style.id = styleId;
        this.style.layer = layerId;
        this.style.type = 'style';
        this.style.children = [];
    }

    /**
     * 设置sql查询条件
     * Parameters : sqlFilter  示例： fcode  = "2602000500" or fcode  = "2507000500"
     *  fileds 示例： {"gid":{"name":"gid","type":"String"}}
     */
    queryFilter(sqlFilter,fileds){
        if(sqlFilter){
            this.style.query = sqlFilter;
            this.style.fields = fileds;
        }else{
            this.style.query = '';
        }
    }

    /**
     * 设置样式
     * Parameters : styleArr  示例：[{
	 *			"text": "省界",
	 *			"name": "省界",
	 *			"filter": "fcode  = \"6302011314\"",
	 *			"query": "Q_fcode_S_EQ=6302011314",
	 *			"isleaf": true,
	 *			"type": "style",
	 *			"iconCls": "icon-line",
	 *			"id": "11_境界线_省界",
	 *			"style": [{
	 *				"stroke": false,
	 *				"strokeWidth": 0,
	 *				"strokeColor": "#ED22AB",
	 *				"strokeOpacity": 1,
	 *				"dash": null,
	 *				"lineCap": "butt",
	 *				"lineJoin": "miter",
	 * 				"sparsity": 1
	 *			}]
     */
    setStyle(styleArr){
        this.style.style=styleArr;
    }

    /**
     * 添加子样式
     * Parameters : gStyleItem  GStyleItem对象实例
     */
    addSubStyle(gStyleItem){
        this.style.children.push(gStyleItem.style);
    }
}
module.exports = GStyleItem;

/***/ }),
/* 363 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/9/26.
 * 前端绘制底图layer
 */
const GVMapGrid = __webpack_require__(364);
const GVMapGridUtil = __webpack_require__(365);
const Version = __webpack_require__(339);
var GDynamicMap  = GVMapGrid.extend({
    // styleObj对象
    styleObj: {},
    //sytle的js形式，为字符串
    styleJs:null,
    initialize: function(url, options) {
        options.isDynamicMap = true;
        if(window.devicePixelRatio > 1.5){
            this.ratio = 2;
        }

        if(!this.sourceUrl){
            this.sourceUrl = url;
        }

        if(options &&options.tileSize){
            this.tilesize = options.tileSize;
        }


        this.gVMapGridUtil = new GVMapGridUtil(options.isDynamicMap);
        this.gVMapGridUtil.tileSize = this.tilesize;
        this.gVMapGridUtil.parseUrl(url);

        this._url = url +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version;
        L.setOptions(this,options);
        this.on('tileunload', this._onTileRemove);
        this.on('tileload', this._onTileLoad);
        this.on('tileerror', this._onTileError);
    },

    onAdd: function () {
        if(this.control){
            this._url = this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+this.control;
        }
        if(this.controlId){
            this._url = this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&controlId='+this.controlId;
        }

        this._initContainer();

        this._levels = {};
        this._tiles = {};

        this.gVMapGridUtil.setStyle(this.styleObj);

        var reqArr = this.gVMapGridUtil.loadStyle('layer');
        Promise.all(reqArr).then(function(){
            this._resetView();
            this._update();
        }.bind(this));
    },

    addLevels:function(gLevels){
        this.styleObj[gLevels.levelsKey] = gLevels.levelsData;
    },

    redraw: function () {
        this.gVMapGridUtil.formatStyle(this.styleObj,function(){
            if (this._map) {
                this._removeAllTiles();
                this._update();
            }
        })
        return this;
    }
})

module.exports = GDynamicMap;

/***/ }),
/* 364 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/9/26.
 * 前端绘制底图layer
 */
const {getJSON} = __webpack_require__(337);
const GVMapGridUtil = __webpack_require__(365);
const DataHolder = __webpack_require__(366);
const Version = __webpack_require__(339);

var GVMapGrid  = L.TileLayer.extend({
    //多个服务器url的域名，用于解决一个域名只有6条请求管线的限制
    urlArray:[],
    // 不带过滤条件的url
    sourceUrl: null,
    // 纹理图标集合
    textures: {},
    //瓦片队列
    tileQueue:[],
    //缩放比例
    ratio:1,
    //过滤json对象
    control:null,
    //过滤的id
    controlId:null,
    //瓦片大小
    tilesize:256,
    initialize: function(url, options) {
        if(window.devicePixelRatio > 1.5){
            this.ratio = 2;
        }

        if(!this.sourceUrl){
            this.sourceUrl = url;
        }

        if(options &&options.tileSize){
            this.tilesize = options.tileSize;
        }


        this.gVMapGridUtil = new GVMapGridUtil();
        this.gVMapGridUtil.tileSize = this.tilesize;
        this.gVMapGridUtil.parseUrl(url);

        this._url = url +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version;
        L.setOptions(this,options);
        this.on('tileunload', this._onTileRemove);
        this.on('tileload', this._onTileLoad);
        this.on('tileerror', this._onTileError);
    },

    onAdd: function () {
        if(this.control){
            this._url = this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+this.control;
        }
        if(this.controlId){
            this._url = this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&controlId='+this.controlId;
        }

        this._initContainer();

        this._levels = {};
        this._tiles = {};

        var reqArr = this.gVMapGridUtil.loadStyle('layer');
        Promise.all(reqArr).then(function(){
            this._resetView();
            this._update();
        }.bind(this));
    },

    /**
     * 重写构造瓦片的方法
     */
    createTile: function (coords, done) {
        //从队列中取canvas，避免频繁创建canvas
        var tile = this.tileQueue.pop();
        if(!tile){
            tile = this.initTile();
        }else{
            this._cleanTile(tile);
        }

        var url = this.getTileUrl(coords);

        getJSON({url:url,dataType:'json'})
            .then(function(data) {
                    if(data.layer == null){
                        tile.data = {};
                    }else{
                        tile.data = data.layer;
                    }
                    this._tileOnLoad.apply(this, [done,tile]);
            }.bind(this),
              function(error){
                  this._tileOnError.apply(this, [done, tile,error]);
              }.bind(this));

        return tile;
    },

    /**
     * 获取url的方法
     */
    getTileUrl: function (coords) {
        var data = {
            r: L.Browser.retina ? '@2x' : '',
            s: this._getSubdomain(coords),
            x: coords.x,
            y: coords.y,
            z: this._getZoomForUrl()
        };
        if (this._map && !this._map.options.crs.infinite) {
            var invertedY = this._globalTileRange.max.y - coords.y;
            if (this.options.tms) {
                data['y'] = invertedY;
            }
            data['-y'] = invertedY;
        }

        if(this.urlArray.length == 0){
            return L.Util.template(this._url, L.extend(data, this.options));
        }else{
            //从urlArray中随机取出一个url
            var len = this.urlArray.length-1;
            var index = Math.round(Math.random()*len);
            var url = this.urlArray[index];

            var array = this._url.split('/mapserver');
            var partUrl = array[1];
            url = url + '/mapserver'+partUrl;
            return L.Util.template(url, L.extend(data, this.options));
        }
    },

    /**
     *  初始化canvas
     */
    initTile:function(){
        // console.time('initTile');
        var tile = document.createElement("canvas");
        tile.style.width = this.tilesize + "px";
        tile.style.height = this.tilesize + "px";
        tile.width = this.tilesize;
        tile.height = this.tilesize;

        var ctx = tile.getContext("2d",{isQuality:true});
        tile.ctx = ctx;
        // console.timeEnd('initTile');
        return tile;
    },

    //移除瓦片
    _onTileRemove: function (e) {
        //加入到瓦片队列
        this.tileQueue.push(e.tile);
    },

    /**
     *  重写，取消请求的操作
     */
    _abortLoading: function () {
        var i, tile;
        for (i in this._tiles) {
            if (this._tiles[i].coords.z !== this._tileZoom) {
                tile = this._tiles[i].el;

                if (!tile.complete) {
                    L.DomUtil.remove(tile);
                }
            }
        }
    },

    _onTileLoad:function(item){
        var tile = item.tile;
        this._drawTile(tile,tile.data);
        tile.complete = true;
    },

    _onTileError:function(item){
        var tile = item.tile;
        tile.complete = true;
        this.tileQueue.push(tile);
    },

    _tileOnError: function (done, tile, e) {
        done(e, tile);
    },

    _drawTile:function(tile,features){
        // console.time('_drawTile');
        var ctx = tile.ctx;
        var level = Math.floor(this._map.getZoom());
        var holder = new DataHolder({
            layerDataMap:features,
            ctx:ctx,
            ratio:1,
            control:null,
            textures:this.gVMapGridUtil.textures,
            extent:{
                level:level
            }
        });
        this.gVMapGridUtil.styleFun.call({}, holder, level);
        // console.timeEnd('_drawTile');
    },

    _cleanTile:function(tile){
        tile.ctx.clearRect(0, 0, this.tilesize, this.tilesize);
    },

    _update: function (center) {
        if(this.isSetIngFilter){
            return;
        }
        L.TileLayer.prototype._update.call(this);
    },

    /**
     * 设置过滤条件
     */
    setFilter:function(filter){
        this.isSetIngFilter =true;
        if(!this._url ||  !filter || (filter.layers.length == 0 && filter.order.length == 0)){
            this.isSetIngFilter =false;
            this.controlId = null;
            this.control = null;
            this.setUrl(this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version);
            return;
        }

        this.gVMapGridUtil.setFilter(filter,function(result){
            this.isSetIngFilter =false;
            if(result.isIE){
                this.controlId =result.id;
                this.setUrl(this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version + '&controlId='+result.id);
            }else{
                this.control =result.id;
                this.setUrl(this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+result.id);
            }
        }.bind(this));
    },

    /**
     * 根据屏幕坐标获取拾取到的要素
     * Parameters :
     * x -
     * y -
     * callback - 拾取成功的回调函数
     */
    getFeatureByXY:function(x,y,callback){
        var latLng = this._map.containerPointToLatLng(new L.point(x,y));
        this.getFeatureByLonlat(latLng,callback);
    },

    /**
     * 根据地理坐标获取拾取到的要素
     * Parameters :
     * lonlat - 地理坐标对象
     * callback - 拾取成功的回调函数
     */
    getFeatureByLonlat:function(latLng,callback){
        var maxBounds = this._map.options.crs.projection.bounds;
        //地图当前范围
        var bounds = this._map.getBounds();
        var pBounds = this._map.getPixelBounds();
        //地图当前分辨率
        var res = (bounds._northEast.lat - bounds._southWest.lat)/(pBounds.max.y - pBounds.min.y);

        var tileSize = this.options.tileSize;
        var row = (maxBounds.max.y - latLng.lat) /(res*tileSize);
        var col = (latLng.lng - maxBounds.min.x)/(res*tileSize);

        var level = this._map.getZoom();
        var tx = (col - Math.floor(col))*tileSize;
        var ty = (row - Math.floor(row))*tileSize;

        this.gVMapGridUtil.pickupFeatures(row,col,level,tx,ty,this.control,this.controlId,function(features){
            callback(features);
        });
    },

    /**
     * 根据指定的样式高亮要素
     * Parameters :
     * layerFeatures - 要素数组
     * style - 高亮样式 如：{color:"red",opacity:0.8};
     */
    highlightFeatures:function(layerFeatures,style){
        //获取高亮的过滤条件
        var filter = this.gVMapGridUtil.CreateHighlightFilter(layerFeatures,style);
        //如果没有过滤任何要素
        if(filter.layers.length == 0){
            return;
        }

        // style.color = style.color.replace('#','%23');
        if(!this.highlightLayer){
            //构造高亮图层
            var url = this.gVMapGridUtil.host + '/mapserver/vmap/'+this.gVMapGridUtil.servername+'/getMAP?x={x}&y={y}&l={z}'
                +'&styleId='+this.gVMapGridUtil.styleId;
            if(this.control){
                url = url + '&control='+this.control;
            }
            if(this.controlId){
                url = url + '&controlId='+this.controlId;
            }


            this.highlightLayer = new L.GXYZ(url,this.options);
            this._map.addLayer(this.highlightLayer);
        }

        this.highlightLayer.options.opacity = style.opacity;
        this.highlightLayer._updateOpacity();
        //设置高亮过滤条件
        this.highlightLayer.setFilter(filter);
        //获取当前图层的index
        var index = this.options.zIndex;
        //设置高亮图层在当前底图图层之上
        this.highlightLayer.setZIndex(index+1);
    },

    /**
     * 根据Filter高亮指定要素
     * Parameters :
     * filter - Filter对象
     */
    highlightByFilter:function(filter){
        //如果没有过滤任何要素
        if(filter.layers.length == 0){
            return;
        }

        // style.color = style.color.replace('#','%23');
        if(!this.highlightLayer){
            //构造高亮图层
            var url = this.gVMapGridUtil.host + '/mapserver/vmap/'+this.gVMapGridUtil.servername+'/getMAP?x={x}&y={y}&l={z}'
                +'&styleId='+this.gVMapGridUtil.styleId;
            if(this.control){
                url = url + '&control='+this.control;
            }
            if(this.controlId){
                url = url + '&controlId='+this.controlId;
            }


            this.highlightLayer = new L.GXYZ(url,this.options);
            this._map.addLayer(this.highlightLayer);
        }

        this.highlightLayer.options.opacity = 1;
        this.highlightLayer._updateOpacity();
        //设置高亮过滤条件
        this.highlightLayer.setFilter(filter);
        //获取当前图层的index
        var index = this.options.zIndex;
        //设置高亮图层在当前底图图层之上
        this.highlightLayer.setZIndex(index+1);
    },


    /**
     * 取消高亮
     */
    cancelHighlight:function(){
        if(this.highlightLayer){
            this._map.removeLayer(this.highlightLayer);
            this.highlightLayer = null;
        }
    }
})
module.exports = GVMapGrid;


/***/ }),
/* 365 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 */
const GXYZUtil = __webpack_require__(342);
const {Deferred,getJSON} = __webpack_require__(337);
class GVMapGridUtil extends GXYZUtil{
    constructor(isDynamicMap) {
        super();
        //纹理
        this.textures = {};

        this.isDynamicMap = isDynamicMap;

        this.styleObj = {};
    }

    /**
     * 设置样式文件
     */
    setStyle(styleObj){
        this.styleObj = styleObj;
        // this.styleFun = new Function("drawer","level", styleStr);
        // if(this.styleDef){
        //     this.styleDef.resolve();
        // }
    }

    formatStyle(styleObj,successFun){
        this.styleObj = styleObj;
        var styleJson = JSON.stringify(this.styleObj);
        getJSON({type:'post',url:this.host + '/mapserver/styleInfo/format.do',
            data:'styleJson= '+ styleJson,
            dataType:'json'}).then(function(result){
            this.styleFun = new Function("drawer","level", result.styleJs);
            successFun();
        }.bind(this));
    }

    /**
     * 加载样式文件和纹理数据
     */
    loadStyle(styleType){
        var def1 = new Deferred();
        var def2 = new Deferred();


        if(!styleType){
            styleType = 'label';
        }

        if(this.isDynamicMap){
            var styleJson = JSON.stringify(this.styleObj);
            getJSON({type:'post',url:'http://127.0.0.1/mapserver/styleInfo/format.do',
                data:'styleJson= '+ styleJson,
                dataType:'json'}).then(function(result){
                this.styleFun = new Function("drawer","level", result.styleJs);
                def1.resolve();
            }.bind(this));

        }else{
            //请求样式文件
            getJSON({url:this.host + '/mapserver/styleInfo/'+this.servername+'/'+this.styleId+'/'+styleType+'/style.js?'+Math.random(),dataType:'text'})
                .then(function(result) {
                    this.styleFun = new Function("drawer","level", result);
                    def1.resolve();
                }.bind(this));
        }


        //请求图标纹理
        getJSON({url:this.host+ '/mapserver/styleInfo/'+this.servername+'/'+this.styleId+'/label/texture.js?'+Math.random(),dataType:'text'}).then(function(result){
            var textures = JSON.parse(result);
            var totalCount = 0;
            for(var i in textures){
                totalCount++;
            }

            if(totalCount == 0){
                def2.resolve();
                return;
            }

            var count = 0;
            for(var key in textures){
                var img = new Image();
                img.name = key;
                img.onload = function(data) {
                    count++;
                    var name = data.target.name;
                    this.textures[name] =data.target;
                    if(count == totalCount){
                        def2.resolve();
                    }
                }.bind(this);
                img.src = textures[key];
            }
        }.bind(this));

        return [def1,def2];
    }

}

module.exports = GVMapGridUtil;

/***/ }),
/* 366 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 */
const AbstractDataHolder = __webpack_require__(367);
const WaterMarkDrawer = __webpack_require__(369);
const Drawer = __webpack_require__(370);
class DataHolder extends AbstractDataHolder{
    constructor(config) {
        super(config,Drawer);
    }

    getBackground(){
        let backgroundDrawer = new BackgroundDrawer({
            extent:this.extent,
            ctx:this.ctx,
            control:this.control,
            ratio:this.ratio
        })
        return backgroundDrawer;
    };

    getWaterMark(){
        let waterMarkDrawer = new WaterMarkDrawer({
            extent:this.extent,
            ctx:this.ctx,
            control:this.control,
            ratio:this.ratio,
            tilesize:this.config.tilesize,
            textures:this.config.textures
        })
        return waterMarkDrawer;
    }

}
module.exports = DataHolder;

/***/ }),
/* 367 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/6/26.
 */
const PropertyGetter = __webpack_require__(368);
class AbstractDataHolder{
    constructor(config,drawerCalss) {
        this.layerDataMap = config.layerDataMap;
        this.extent = config.extent;
        this.ctx = config.ctx;
        this.ratio = config.ratio;
        this.control = config.control;
        this.drawerCalss = drawerCalss;
        this.config = config;
        this.textures = config.textures;
    }

    _emptyDrawer(styleLayerID){
        let drawer = new this.drawerCalss(null);
        return drawer;
    }

    getLayer(dataLayerID,styleLayerID){
        if(styleLayerID == null){
            styleLayerID = dataLayerID;
        }

        if(null == this.layerDataMap){
            return this._emptyDrawer(styleLayerID);
        }


        //判断其他图层是否显示Control otherDisplay,如果是其他图层不显示，则需要在这里处理
        if(this.control != null) {
            //      console.log(this.control.controlObj.otherDisplay);
            if (this.control.controlObj.otherDisplay == false) {
                if (this.control.controlObj.controlLayersArr.indexOf(styleLayerID) == -1) {
                    return this._emptyDrawer(styleLayerID);
                }
            }
        }


        let data = this.layerDataMap[dataLayerID];

        if(data == null){
            return this._emptyDrawer(styleLayerID);
        }else{
            //修正一个十分傻逼的错误,好吧，我英语不好
            if(data.datas){
                data.features = data.datas;
            }
            // delete data.datas;

            if(data.features == null){
                return this._emptyDrawer(styleLayerID);
            }
            let propertyGetter = null;
            if(null !== data.fieldsConfig){
                propertyGetter = new PropertyGetter(data.fieldsConfig);
            }

            this.config['dataLayerID'] = dataLayerID;
            this.config['styleLayerID'] = styleLayerID;
            this.config['propertyGetter'] = propertyGetter;
            this.config['control'] = this.control;
            this.config['textures'] = this.textures;


            let drawer = new this.drawerCalss(this.config);



            if(!Array.isArray(data.features)){
                for(let index in data.features){
                    let feature = data.features[index];
                    feature.type = data.type;
                    drawer.addFeatures(feature);
                }
            }else {
                let feature = data.features;
                feature.type = data.type;
                drawer.addFeatures(feature);
            }
            return drawer;
        }
    }

    getGroupLayer(dataLayerID,value,styleLayerID){

        if(this.layerDataMap == null){
            return this._emptyDrawer(styleLayerID);
        }
        if(styleLayerID == null){
            styleLayerID = dataLayerID;
        }
        //判断其他图层是否显示Control otherDisplay,如果是其他图层不显示，则需要在这里处理
        if(this.control != null) {
            //      console.log(this.control.controlObj.otherDisplay);
            if (this.control.controlObj.otherDisplay == false) {
                if (this.control.controlObj.controlLayersArr.indexOf(styleLayerID) == -1) {
                    return this._emptyDrawer(styleLayerID);
                }
            }
        }

        let data = this.layerDataMap[dataLayerID];
        if(this.layerDataMap == null){
            return this._emptyDrawer(styleLayerID);
        }
        if(data == null){
            return this._emptyDrawer(styleLayerID);
        }
        if(data.datas == null && data.data == null ){
            return this._emptyDrawer(styleLayerID);
        }

        let valueArr = value.split(',');
        let length = valueArr.length;
        if(length == 0){
            return this._emptyDrawer(styleLayerID);
        }
        let propertyGetter = null;
        if(data.fieldsConfig != null){
            propertyGetter = new PropertyGetter(data.fieldsConfig);
        }
        this.config['dataLayerID'] = dataLayerID;
        this.config['styleLayerID'] = styleLayerID;
        this.config['propertyGetter'] = propertyGetter;
        this.config['control'] = this.control;
        this.config['textures'] = this.textures;

        let drawer = new this.drawerCalss(this.config);

        if(data.data == null){
            data.features = data.datas;
        }else{
            data.features = data.data;
        }
        for(let i = 0 ; i < length ; i ++){
            let dataArr = data.features[valueArr[i]]
            if(dataArr == null){
                continue;
            }
            dataArr.type = data.type;
            drawer.addFeatures(dataArr);
        }
        return drawer;
    }

}

module.exports = AbstractDataHolder;

/***/ }),
/* 368 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/6/26.
 */
class PropertyGetter{
    constructor(propertyConfig) {
        this.propertyConfig = {};

        for(var i = 0 ;i < propertyConfig.length; i ++){
            if(propertyConfig[i].id == 'true' || propertyConfig[i].id == true){

                this.idIndex = propertyConfig[i].index;
            }
            this.propertyConfig[propertyConfig[i].name] = parseInt(propertyConfig[i].index);
        }
    }

    get(data, propertyName){

        var value = data[this.propertyConfig[propertyName]];
        return value;
    };

    getId(data){
        return data[this.idIndex];
    }
}

module.exports = PropertyGetter;



/***/ }),
/* 369 */
/***/ ((module) => {


class WaterMarkDrawer {
    constructor(config) {

        this.ratio = config.ratio;
        this.datasArr = [];
        this.ctx = config.ctx;
        this.extent = config.extent;
        this.control = config.control;
        this.styleFn = null;
        this.drawable = false;
        this.config = config;
    }

    getName() {
        return this.name;
    }

    /**
     * 加入样式队列
     * @param fn
     */
    setStyle(fn) {
        this.styleFn = fn;
    }


    draw() {
        this.drawable = true;
        this.doDraw();
    }

    /**
     * 绘制
     */
    doDraw() {
        // //如果有全局默认水印，则服务水印绘制
        // if(global._defaultWaterMark__ != null){
        //     return;
        // }

        //由于前端暂时无法获取水印图片，暂时不画水印
        return;

        let originPixelX = this.config.extent.x * this.config.tilesize * this.ratio;
        let originPixelY = this.config.extent.y * this.config.tilesize * this.ratio;

        let style = null;
        style = this.styleFn.call({}, this.level);
        let content = style.content;
        let cross = style.rule == "across" ? true : false;
        let textureId = style.textureId;
        let waterMarkOpacity = style.waterMarkOpacity;
        // let xspace = style.x;
        // let yspace = style.y;
        //
        // let areaTextureBean = new AreaTextureBean(textureId,null,content);
        //
        // let img = areaTextureBean.toPattern(this.ratio,xspace,yspace,cross);
        let img = this.config.textures[textureId];
        let pat = this.ctx.createPattern(img, "repeat");
        let x = (originPixelX % img.width - 0.1);
        let y = (originPixelY % img.height - 0.1);
        this.ctx.globalAlpha = waterMarkOpacity / 100;
        this.ctx.beginPath();
        let width = this.config.tilesize * this.ratio;
        this.ctx.rect(- width * 0.1,- width * 0.1 ,width * 1.2,width * 1.2);

        this.ctx.save();
        this.ctx.translate(-x, -y);
        this.ctx.fillStyle = pat;
        this.ctx.fill();
        this.ctx.restore();
    }
}
module.exports = WaterMarkDrawer;

/***/ }),
/* 370 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/5/1.
 */
const AbstractVTileProcess = __webpack_require__(371);
class Drawer extends AbstractVTileProcess{
    constructor(config) {
        super(config);
        if(config){
            this.ctx = config.ctx;
            this.shadowDatas = [];
            this.textures = config.textures;
        }
    }

    draw(){
        if (this.featuresArr == null) {
            return;
        }
        this.process();
        for(var j = 0;j < this.shadowDatas.length ; j++){
            var shadowData = this.shadowDatas[j];
            this._drawShape(shadowData.data);
            this._processShadowEnd(shadowData.style);
        }
    }

    _processShadowEnd(style){
        this.ctx.closePath();
        if(style['shadowColor']){
            this.ctx.globalAlpha = 1;
            this.ctx.fillStyle = style['shadowColor'];
            this.ctx.fill();
        }
    }


    _drawShape(points) {
        var context = this.ctx;
        if (!points.length) {
            return;
        }

        context.beginPath();
        if(this.resize){
            context.moveTo(points[0]* this.ratio, points[1]* this.ratio);
            for (var i = 2, il = points.length; i < il; i += 2) {
                context.lineTo(points[i]* this.ratio, points[i + 1]* this.ratio);
            }
        }else{
            context.moveTo(points[0], points[1]);
            for (var i = 2, il = points.length; i < il; i += 2) {
                context.lineTo(points[i], points[i + 1]);
            }
        }
        context.closePath();
    }


    _processFeature(gjson) {
        var style = this._filterByStyle(gjson);
        if (style == null) {
            return;
        }
        if (style.display == false) {
            return;
        }
        this._beginDraw();
        this._drawFeature(gjson,style);
    }

    _beginDraw(){
        this.ctx.beginPath();
    }

    _drawFeature(gjson,style){
        var type = this._getType(gjson);
        var points = this._getPoints(gjson);
        var property = this._getProperty(gjson);
        if(points == null){
            throw "绘制失败,数据中缺少Geometry";
        }
        if(type == null){
            type = "POLYGON";
        }
        var sparsity = null;
        if(style.sparsity == null){


        }else {
            sparsity = parseFloat(style.sparsity);
        }
        switch (type) {
            case "PT":
                this._processPoint(points);
                break;
            case "LINESTRING":
                this._processLineString(points,sparsity);
                this._processLineStringEnd(style);
                break;
            case "MULTILINESTRING":
                this._processLineString(points,sparsity);
                this._processLineStringEnd(style);
                break;
            case "MULTIPOLYGON":
                this._processPolygon(points,sparsity);
                this._processPolygonEnd(style);
                break;
            case "POLYGON":
                this._processPolygon(points,sparsity);
                this._processPolygonEnd(style);
                break;
            default:
                break;
        }
        if(style['shadowColor']){
            this._processShadow(points,style,type);
        }

    }

    _processShadow(components,style,type) {
        var len = components.length;
        for (var i = 0; i < len; i++) {
            var component = components[i];

            if (Array.isArray(component)) {
                if (component.length == 0) {
                    return;
                }
                if (Array.isArray(component[0])) {
                    this._processShadow(component);
                } else {
                    this._drawShadow(component, style, type);
                }
            }else{
                var PS = component.PS;
                this._drawShadow(PS, style, type);
            }
        }
    }

    _drawShadow(points,style,type){
        var h = -3.5 ;
        if(type == 'MULTIPOLYGON' || type =='POLYGON'){
            for(var i = 0; i < points.length - 3; i += 2){
                var _a = {};
                var _b = {};
                _a.x = points[i];
                _a.y = points[i + 1];
                _b.x = points[i + 2];
                _b.y = points[i + 3];

                var ax = _a.x;
                var ay =  _a.y+h;
                var bx = _b.x ;
                var by = _b.y+h;
                if ((bx - ax) * (_a.y - ay) < (_a.x - ax) * (by - ay)) {
                    // this._drawShape([
                    //     bx , by ,
                    //     ax , ay ,
                    //     _a.x, _a.y,
                    //     _b.x, _b.y
                    // ],true);
                    // this._processShadowEnd(style);
                    var shadowData = {};
                    shadowData.data = [
                        bx , by ,
                        ax , ay ,
                        _a.x, _a.y,
                        _b.x, _b.y
                    ];
                    shadowData.style =style;
                    this.shadowDatas.push(shadowData);
                }
            }
        }
    }

    _processPoint(points){

    }

    _processLineString(components,sparsity) {
        if (Array.isArray(components[0])) {
            var len = components.length;
            for (var i = 0; i < len; i++) {
                var component = components[i];
                this._processLineString(component,sparsity);
            }
        } else {
            this._renderLinePath(components, false,sparsity);
        }
    }

    _processLineStringEnd(style) {
        var stroke = true;

        if (style.stroke == false) {
            stroke = false;
        }
        if (stroke != false) {
            if (this.resize) {
                this.ctx.lineWidth = style.strokeWidth * this.ratio;
            }else{
                this.ctx.lineWidth = style.strokeWidth;
            }
            this.ctx.strokeStyle = style.strokeColor;
            this.ctx.globalAlpha = style.strokeOpacity;
            if (style.dash != null && style.dash != '' && style.dash.length  > 0) {
                this.ctx.setLineDash(style.dash);
            }
            if (style.lineCap) {
                this.ctx.lineCap = style.lineCap;
            }
            this.ctx.stroke();

            var customeColor = style['customeColor'];

            if (typeof customeColor == "object" && customeColor['color'] != null) {
                this.ctx.strokeStyle = customeColor['color'];
                this.ctx.globalAlpha = customeColor['opacity'];
                this.ctx.stroke();
            }
            this.ctx.setLineDash([])
            this.ctx.lineJoin = "round";
            this.ctx.lineCap = "butt";
        }
    }

    _processPolygon(components,sparsity){
        if (Array.isArray(components[0])) {
            var len = components.length;
            for (var i = 0; i < len; i++) {
                var component = components[i];
                this._processPolygon(component,sparsity);
            }
        } else {
            this._renderLinePath(components, true , sparsity);
        }
    }

    _processPolygonEnd(style){
        var stroke = false;
        var fill = false;
        if (style.stroke == true) {
            stroke = true;
        }
        if(style.fill == true){
            fill = true;
        }
        if (fill) {
            if(style['fillColor']) {
                this.ctx.fillStyle = style['fillColor'];
            }
            if(style['fillOpacity']) {
                this.ctx.globalAlpha = style['fillOpacity'];
            }else{
                this.ctx.globalAlpha = 1;
            }

            this.ctx.fill();
        }
        if (stroke) {
            if(style['strokeWidth']) {

                if(this.resize){
                    this.ctx.lineWidth = style.strokeWidth * this.ratio;
                }else{
                    this.ctx.lineWidth = style.strokeWidth;
                }
            }
            if(style['strokeColor']) {
                this.ctx.strokeStyle = style['strokeColor'];
            }
            if(style['strokeOpacity']) {
                this.ctx.globalAlpha = style['strokeOpacity'];
            }else{
                this.ctx.globalAlpha = 1;
            }
            this.ctx.stroke();
        }
        if(style['texture']){
            var textureId = style['texture'];
            var texture = this.textures(textureId);
            if(texture != null){
                var ratio = style['textureratio'];
                if(ratio == null){

                }
                var pat = this.ctx.createPattern(texture.toPattern(ratio),"repeat");
                this.ctx.fillStyle = pat;
                this.ctx.fill();
            }
        }
        var customeColor = style['customeColor'];


        if (typeof customeColor == "object" && customeColor['color'] != null) {

            this.ctx.fillStyle = customeColor['color'];
            this.ctx.globalAlpha = customeColor['opacity'];
            this.ctx.fill();
        }
    }


    _isSavePoint(previous,now,next,sparsity){

        if(previous == null || next == null){
            return true;
        }
        var dx = now[0] - previous[0];
        var dy = now[1] - previous[1];
        var dx1 = next[0] - now[0];
        var dy1 = next[1] - now[1];

        if(Math.sqrt(dx * dx + dy * dy) < sparsity && Math.sqrt(dx1 * dx1 + dy1 * dy1) < sparsity){
            return false
        }else{
            return true;
        }
    }

    _renderLinePath(points,close,sparsity){
        //   sparsity = 2.5
        if(this.resize){
            this.ctx.moveTo(points[0] * this.ratio , points[1] * this.ratio);
        }else{
            this.ctx.moveTo(points[0], points[1]);
        }

        var i = 2;
        var len = points.length;
        if(len % 2 != 0){
            len = len - 1;
        }
        var previous = [points[0],points[1]];
        var now = null;
        var next = null;
        while(i < len){

            var gap = 0;
            now = [points[i], points[i + 1]];
            if(sparsity != null) {
                if (i + 2 > len) {
                    next = null;
                } else {
                    next = [points[i + 2], points[i + 3]];
                }

                while (!this._isSavePoint(previous, now, next, sparsity * this.ratio)) {
                    gap = gap + 2;
                    now = [points[i + gap], points[i + 1 + gap]];
                    if (i + 2 + gap > len) {
                        next = null;
                    } else {
                        next = [points[i + 2 + gap], points[i + 3 + gap]];
                    }
                }
            }

            if(this.resize) {
                this.ctx.lineTo(now[0] * this.ratio , now[1] * this.ratio );
            }else{
                this.ctx.lineTo(now[0], now[1]);
            }
            previous = now;
            i = i + gap + 2;
        }
        if(close){
            if(this.resize){
                this.ctx.lineTo(points[0] * this.ratio , points[1] * this.ratio);
            }else{
                this.ctx.lineTo(points[0], points[1]);
            }
            this.ctx.closePath();
        }
    }
}

module.exports = Drawer;



/***/ }),
/* 371 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/6/26.
 */
class AbstractVTileProcess{
    constructor(config) {
        if(config){
            //放数据的容器
            this.featuresArr = [];
            //属性构造器
            this.propertyGetter = config.propertyGetter;
            //网格
            this.extent = config.extent;
            /**
             * 缩放比例
             * @type {*|number}
             */
            this.ratio = config.ratio;
            this.resize = false;
            if(this.ratio != 1){
                this.resize = true;
            }

            /**
             * 等级
             */
            this.level = this.extent.level;
            /**
             * 数据层级ID
             */
            this.dataLayerID = config.dataLayerID;
            /**
             * 样式层级ID
             */
            this.styleLayerID = config.styleLayerID;
            /**
             * 过滤器
             * @type {*|null}
             */
            this.control = config.control;
        }
    }


    /**
     * 加入处理数据
     * @param features
     */
    addFeatures(features){
        this.featuresArr.push(features);
    }

    /**
     * 加入处理样式
     * @param fn
     */
    setStyle(fn){
        this.styleOperator = fn;
    }


    /**
     *处理
     */
    process(){
        let queryFilter = null;


        if (this.featuresArr == null) {
            return;
        }
        let length = this.featuresArr.length;
        if (length == 0) {
            return;
        }
        for (let i = 0; i < length; i++) {
            let features = this.featuresArr[i];
            this._processFeatures(features);
        }


    }



    _processFeature(gjson){
        throw "抽象方法"
    }

    _processFeatures(features) {
        for (let i = 0; i < features.length; i++) {
            let gjson = features[i];
            this._processFeature(gjson);
        }
        return;
    }

    _getProperty(data){
        return data[1];
    }

    _getPoints(data){
        return data[2];
    }
    _getType(data){
        return data[0];
    }
    _filterByStyle(gjson) {
        let type = this._getType(gjson);
        let points = this._getPoints(gjson);
        let property = this._getProperty(gjson);
        if(points == null){
            throw "绘制失败,数据中缺少Geometry";
        }
        if(type == null){
            type = "POLYGON";
        }
        let controlRes = null;
        let style = null;
        if(this.styleOperator == null){
            return null;
        }else {
            this.propertyGetter;
            let id = this.propertyGetter.getId(property);
            let _propertyGetter = this.propertyGetter;
            let get = function(fieldName){
                return _propertyGetter.get(property,fieldName);
            }
            if(this.control) {
                if(typeof this.control.controlFn == "function") {
                    controlRes = this.control.controlFn.call({}, id, get, this.styleLayerID);
                    if (controlRes == false || controlRes == null) {
                        return {
                            display:false
                        };
                    }
                }
            }
            style = this.styleOperator.call({},this.level,get);
            //   } catch (e) {
            //        throw e;
            //    }
        }
        if(style == null){
            return null;
        }
        if(style.display != null){
            if (style.display == false) {
                return {
                    display:false
                };
            }
        }
        if(controlRes != null) {
            style.customeColor = controlRes;
        }
        return style;
    }
}
module.exports = AbstractVTileProcess;

/***/ }),
/* 372 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Created by kongjian on 2017/7/3.
 * 后端绘制底图layer
 */
const GXYZUtil = __webpack_require__(342);
const Version = __webpack_require__(339);
var GXYZ  = L.TileLayer.extend({
    //多个服务器url的域名，用于解决一个域名只有6条请求管线的限制
    urlArray:[],
    // 不带过滤条件的url
    sourceUrl: null,
    //底图图层的代理类，负责封装过滤，拾取高亮等接口
    gxyzUtil:null,
    //高亮图层
    highlightLayer:null,
    //缩放比例
    ratio:1,
    //过滤json对象
    control:null,
    //过滤的id
    controlId:null,
    //瓦片大小
    tilesize:256,
    initialize: function(url, options) {
        if(window.devicePixelRatio > 1.5){
            this.ratio = 2;
        }

        if(!this.sourceUrl){
            this.sourceUrl = url;
        }

        if(options &&options.tileSize){
            this.tilesize = options.tileSize;
        }

        this.gxyzUtil = new GXYZUtil();
        this.gxyzUtil.tileSize = this.tilesize;
        this.gxyzUtil.parseUrl(url);

        this._url = url +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version;
        L.setOptions(this,options);
    },

    onAdd: function () {
        if(this.control){
            this._url = this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+this.control;
        }
        if(this.controlId){
            this._url = this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&controlId='+this.controlId;
        }

        this._initContainer();

        this._levels = {};
        this._tiles = {};

        this._resetView();
        this._update();
    },

    _update: function (center) {
        if(this.isSetIngFilter){
            return;
        }
        L.TileLayer.prototype._update.call(this);
    },

    /**
     * 获取url的方法
     */
    getTileUrl: function (coords) {
        var data = {
            r: L.Browser.retina ? '@2x' : '',
            s: this._getSubdomain(coords),
            x: coords.x,
            y: coords.y,
            z: this._getZoomForUrl()
        };
        if (this._map && !this._map.options.crs.infinite) {
            var invertedY = this._globalTileRange.max.y - coords.y;
            if (this.options.tms) {
                data['y'] = invertedY;
            }
            data['-y'] = invertedY;
        }

        if(this.urlArray.length == 0){
            return L.Util.template(this._url, L.extend(data, this.options));
        }else{
            //从urlArray中随机取出一个url
            var len = this.urlArray.length-1;
            var index = Math.round(Math.random()*len);
            var url = this.urlArray[index];

            var array = this._url.split('/mapserver');
            var partUrl = array[1];
            url = url + '/mapserver'+partUrl;
            return L.Util.template(url, L.extend(data, this.options));
        }
    },

    /**
     * 设置过滤条件
     */
    setFilter:function(filter){
        this.isSetIngFilter = true;
        if(!this._url ||  !filter || (filter.layers.length == 0 && filter.order.length == 0)){
            this.isSetIngFilter =false;
            this.controlId = null;
            this.control = null;
            this.setUrl(this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version);
            return;
        }

        this.gxyzUtil.setFilter(filter,function(result){
            this.isSetIngFilter = false;
            if(result.isIE){
                this.controlId =result.id;
                this.setUrl(this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version + '&controlId='+result.id);
            }else{
                this.control =result.id;
                this.setUrl(this.sourceUrl +'&ratio='+this.ratio+'&tilesize='+this.tilesize+'&clientVersion='+Version+ '&control='+result.id);
            }
        }.bind(this));
    },

    /**
     * 根据屏幕坐标获取拾取到的要素
     * Parameters :
     * x -
     * y -
     * callback - 拾取成功的回调函数
     */
    getFeatureByXY:function(x,y,callback){
        var latLng = this._map.containerPointToLatLng(new L.point(x,y));
        this.getFeatureByLonlat(latLng,callback);
    },

    /**
     * 根据地理坐标获取拾取到的要素
     * Parameters :
     * lonlat - 地理坐标对象
     * callback - 拾取成功的回调函数
     */
    getFeatureByLonlat:function(latLng,callback){
        var pt = this._map.options.crs.projection.project(latLng);

        var maxBounds = this._map.options.crs.projection.bounds;
        //地图当前范围
        var bounds = this._map.getBounds();
        var pBounds = this._map.getPixelBounds();

        var east = this._map.options.crs.projection.project(bounds._northEast);
        var west = this._map.options.crs.projection.project(bounds._southWest);
        //地图当前分辨率
        var res = (east.y - west.y)/(pBounds.max.y - pBounds.min.y);

        var tileSize = this.options.tileSize;
        var row = (maxBounds.max.y - pt.y) /(res*tileSize);
        var col = (pt.x - maxBounds.min.x)/(res*tileSize);

        var level = this._map.getZoom();
        var tx = (col - Math.floor(col))*tileSize;
        var ty = (row - Math.floor(row))*tileSize;

        this.gxyzUtil.pickupFeatures(row,col,level,tx,ty,this.control,this.controlId,function(features){
            callback(features);
        });
    },

    /**
     * 根据指定的样式高亮要素
     * Parameters :
     * layerFeatures - 要素map集合
     * style - 高亮样式 如：{color:"red",opacity:0.8};
     */
    highlightFeatures:function(layerFeatures,style){
        //获取高亮的过滤条件
        var filter = this.gxyzUtil.CreateHighlightFilter(layerFeatures,style);
        //如果没有过滤任何要素
        if(filter.layers.length == 0){
            return;
        }

        // style.color = style.color.replace('#','%23');
        if(!this.highlightLayer){
            //构造高亮图层
            this.highlightLayer = new L.GXYZ(this.sourceUrl,this.options);
            this._map.addLayer(this.highlightLayer);
        }

        this.highlightLayer.options.opacity = style.opacity;
        this.highlightLayer._updateOpacity();
        //设置高亮过滤条件
        this.highlightLayer.setFilter(filter);
        //获取当前图层的index
        var index = this.options.zIndex;
        //设置高亮图层在当前底图图层之上
        this.highlightLayer.setZIndex(index+1);
    },


    /**
     * 根据指定的样式高亮要素，每个要素都可以有不同的样式
     * Parameters :
     * layerFeatures - 要素map集合
     * opacity - 透明度，所有要高亮的要素都是必须是相同的透明度;
     */
    highlightEveryFeatures:function(layerFeatures,opacity){
        //获取高亮的过滤条件
        var filter = this.gxyzUtil.CreateEveryHighlightFilter(layerFeatures);
        //如果没有过滤任何要素
        if(filter.layers.length == 0){
            return;
        }

        if(!this.highlightLayer){
            //构造高亮图层
            this.highlightLayer = new L.GXYZ(this.sourceUrl,this.options);
            this._map.addLayer(this.highlightLayer);
        }

        this.highlightLayer.options.opacity = opacity;
        this.highlightLayer._updateOpacity();
        //设置高亮过滤条件
        this.highlightLayer.setFilter(filter);
        //获取当前图层的index
        var index = this.options.zIndex;
        //设置高亮图层在当前底图图层之上
        this.highlightLayer.setZIndex(index+1);
    },


    /**
     * 根据Filter高亮指定要素
     * Parameters :
     * filter - Filter对象
     */
    highlightByFilter:function(filter){
        //如果没有过滤任何要素
        if(filter.layers.length == 0){
            return;
        }

        if(!this.highlightLayer){
            //构造高亮图层
            this.highlightLayer = new L.GXYZ(this.sourceUrl,this.options);
            this._map.addLayer(this.highlightLayer);
        }

        this.highlightLayer.options.opacity = 1;
        this.highlightLayer._updateOpacity();
        //设置高亮过滤条件
        this.highlightLayer.setFilter(filter);
        //获取当前图层的index
        var index = this.options.zIndex;
        //设置高亮图层在当前底图图层之上
        this.highlightLayer.setZIndex(index+1);
    },


    /**
     * 取消高亮
     */
    cancelHighlight:function(){
        if(this.highlightLayer){
            this._map.removeLayer(this.highlightLayer);
            this.highlightLayer = null;
        }
    }
})

module.exports = GXYZ;

/***/ }),
/* 373 */
/***/ ((module) => {

/**
 * Created by kongjian on 2017/6/26.
 */
class GServiceGroup{
    constructor(layerId, url, map, options) {
        this.map = null;
        this.layer = null;
        this.label = null;
        this.layerType = 0;
        this.labelType = 2;
        this.map = map;
        this.url = url;
        this.layerId = layerId;
        this.styleId = null;
        this.tileSize = 256;
    }

    addServiceGroup() {
        if(options && options.styleId){
            this.styleId = options.styleId;
        }
        if(options && options.tileSize){
            this.tileSize = options.tileSize;
        }
        switch(this.layerType){
            case 0: this.addBaseLayer();
                break;
            case 1: this.addFrontBaseLayer();
                break;
        }
        switch(this.labelType){
            case 2: this.addFrontLabel();
                break;
            case 3: this.AddImgLabel();
                break;
            case 4: this.addAvoidLabel();
                break;
        }
    };
    /*后端底图*/
    addBaseLayer() {
        this.layer = new L.GXYZ(
            this.url + "&x={x}&y={y}&l={z}&tileType=" + this.layerType,
            {sphericalMercator: false, isBaseLayer: false,tileSize:this.tileSize}
        );
        this.map.addLayer(this.layer);

    };
    /*前端底图*/
    addFrontBaseLayer(){
        this.layer = new L.GVMapGrid(
            this.url + "&x={x}&y={y}&l={z}&tileType=" + this.layerType,
            {maxZoom: 21,keepBuffer:0,updateWhenZooming:false,tileSize:this.tileSize}
        );
        this.map.addLayer(this.layer);
    }
//////////////////////////////////////////////////////////////////////////

    /*后端注记绘制*/
    AddImgLabel(){
        this.label = new L.GXYZ(
            this.url + "&x={x}&y={y}&l={z}&tileType=" + this.labelType,
            {sphericalMercator: false, isBaseLayer: false,tileSize:this.tileSize}
        );
        this.map.addLayer(this.label);
    }
    /*后端注记避让*/
    addAvoidLabel(url) {
        this.label = new L.GLabelGrid(
            this.url + '&x={x}&y={y}&l={z}&tileType=' + this.labelType,
            {hitDetection:true,keepBuffer:0,updateWhenZooming:false,tileSize:this.tileSize}
        );
        this.map.addLayer(this.label);

    };
    /*前端*/
    addFrontLabel(url) {
        this.label = new L.GWVTAnno("GWVTanno",{tileSize:this.tileSize});

        var dataSource = new Custom.URLDataSource();
        dataSource.url = this.url+'&x=${x}&y=${y}&l=${z}&tileType='+this.labelType;
        this.label.addDataSource(dataSource);
        this.map.addLayer(this.label);
    };

    setLayerType(layerType) {
        if(layerType == "Img"){
            this.layerType = 0;
        }else if(layerType == "Data"){
            this.layerType = 1;
        }
    };

    setLabelType(labelType) {
        if(labelType == "Data"){
            this.labelType = 2;
        }else if(labelType == "Img"){
            this.labelType = 3;
        }else if(labelType == "AvoidImg"){
            this.labelType = 4;
        }
    };
    setTileSize(tileSize) {
        this.tileSize = tileSize;
    };
    getLayer() {
        return this.layer;
    };

    getLabel() {
        return this.label;
    };

    removeGroupLayer() {
        if(this.layer){
            this.map.removeLayer(this.layer);
        }
        if(this.label){
            this.map.removeLayer(this.label);
        }
    };
}

module.exports = GServiceGroup;

/***/ })
/******/ 	]);
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	})();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module is referenced by other modules so it can't be inlined
/******/ 	var __webpack_exports__ = __webpack_require__(0);
/******/ 	
/******/ })()
;